1、一般定義
//定義常量
#define pi 3.1415926
//定義表達(dá)式
#define add(a, b) a+b
#define max(a, b) (a>b)?a:b
//復(fù)雜表達(dá)式最好用括號(hào)括起來(lái), 防止出錯(cuò)
#define mul(a, b) (a)*(b)
mul(1+a, 2+b) //會(huì)解析成:(1+a)*(2+b)
#define mul(a, b) a*b
mul(1+a, 2+b) //會(huì)解析成:1+a*2+b
2、條件判斷
#if defined true //判斷是否定義
#undef true //如果定義了取消定義
#define true 1 //重新定義
#endif //if結(jié)束
#ifdef true //#ifdef是#if defined的簡(jiǎn)寫
#endif
#if !defined true //如果未定義
#define true 1
#endif
#ifndef true //如果未定義 #ifndef是if !defined的縮寫
#define true 1
#endif
3、編譯時(shí)錯(cuò)誤信息
#ifndef true
#error undefined true //定義的錯(cuò)誤信息不需要引號(hào)
#endif
4、系統(tǒng)常見(jiàn)自定義宏
__FILE__ 當(dāng)前編輯的文件
__FUNCTION__ 點(diǎn)前的函數(shù)名
__LINE__ 行號(hào)
__DATE__ 日期
__TIME__ 時(shí)間
5、宏參數(shù)的字符串化和宏參數(shù)的連接
字符串化:
#define STR(s) #s
printf("%s %s %s\n", STR(abc), STR('abc'), STR("abc"));
如果:
#define STR1(s) s
printf("%s\n", STR1("abc")); //正確
printf("%s\n", STR1(abc)); //需要提前定義abc
printf("%s\n", STR1("abc")); //需要提前定義'abc'
參數(shù)連接:
#define CON(a, b) a##b
printf("%d\n", CON(12, 34)); //輸出1234
char *abcd = "test123";
printf("%s\n", CON(ab, cd)); //輸出test123
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。