欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

詳解C語言中的#define宏定義命令用法

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

#define
命令#define定義了一個標(biāo)識符及一個串。在源程序中每次遇到該標(biāo)識符時,均以定義的串代換它。ANSI標(biāo)準(zhǔn)將標(biāo)識符定義為宏名,將替換過程稱為宏替換。命令的一般形式為:

#define identifier string

注意:
1.該語句沒有分號。在標(biāo)識符和串之間可以有任意個空格,串一旦開始,僅由一新行結(jié)束。
2.宏名定義后,即可成為其它宏名定義中的一部分。
3.宏替換僅僅是以文本串代替宏標(biāo)識符,前提是宏標(biāo)識符必須獨立的識別出來,否則不進(jìn)行替換。例如:
#define XYZ this is a tes
使用宏printf("XYZ");//該段不打印"this is a test"而打印"XYZ"。因為預(yù)編譯器識別出的是"XYZ"
4.如果串長于一行,可以在該行末尾用一反斜杠' \'續(xù)行。
#defineLONG_STRING"this is a very long\
string that is used as an example"
5.C語言程序普遍使用大寫字母定義標(biāo)識符。
6.用宏代換代替實在的函數(shù)的一大好處是宏替換增加了代碼的速度,因為不存在函數(shù)調(diào)用的開銷。但增加速度也有代價:由于重復(fù)編碼而增加了程序長度。

宏定義的注意事項
試圖使用宏去定義注釋符號是不行的,例如以下代碼:

#define BSC //
#define BMC /*
#define EMC */
BSC my single-line comment
BMC my multi-line comment EMC

因為注釋先于預(yù)處理指令處理,當(dāng)展開這些宏定義的時候自然會出現(xiàn)一堆錯誤。
宏定義表達(dá)式的時候一定不能吝嗇括號。這個不用解釋了。
宏定義的時候宏名中最好不要有空格。下面的定義會帶來很多麻煩:

  #define SUM (x) ((x)*(x))

一旦使用了#undef撤銷宏,則后面的代碼都不能使用這個宏,除非再次定義。此外,如果沒有#undef的情形下就直接再次定義,后來的定義會覆蓋掉前面的定義。下面代碼中的c值是4:

  #include <stdio.h>
 
  #define X 3
  #define Y X*2
  #undef X
  #define X 2
 
  int c = Y;
 
  int main(int argc, char** argv){
    printf("%d",c) ;
    return 0;
  }

宏僅在使用的時候展開,否則即使定義有問題,也不會編譯出錯。如果把上面代碼中的第二個#define注釋掉,并把C的值賦值為0,即撤銷了X定義,也不會報錯,因為沒有使用Y,也就不會展開。

上一篇:C++遍歷文件夾獲取文件列表

欄    目:C語言

下一篇:C++中const應(yīng)放在類型前還是后

本文標(biāo)題:詳解C語言中的#define宏定義命令用法

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2312.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有