如果讓你用C語(yǔ)言寫個(gè)宏定義,我相信大部分同學(xué)順手就能寫出define。
這也是C語(yǔ)言中最常見(jiàn)的宏定義寫法,這樣的代碼在預(yù)處理的時(shí)候直接被替換。
在C語(yǔ)言中,還有兩種宏定義容易被忽略。
一種是預(yù)定義宏,顧名思義,就是別人預(yù)先定義好的,拿過(guò)來(lái)用就行。
常見(jiàn)的比如file line date time 分別表示文件名、行號(hào)、日期和時(shí)間,主要就是讓用戶用起來(lái)更方便。
還有一種定義宏的方式,是在編譯的時(shí)候,以 gcc 為例。
#includeint main() { printf("%d ", A); return 0; }
我們?cè)诖a中輸出 A,如果代碼直接拿過(guò)來(lái)編譯,肯定會(huì)報(bào)錯(cuò),A 既不是變量也不是常量,屬于未定義。
但是如果在編譯的時(shí)候,加上 -D 選項(xiàng),后面跟上 A,可以給他賦值,也可以不賦值,那編譯就能順利通過(guò),A默認(rèn)的值是 1。
gcc test.c -o test -D A
這個(gè)用法的使用場(chǎng)景很多,比如跨平臺(tái),比如加一些調(diào)試選項(xiàng),如果定義了 DEBUG,就輸出下面的調(diào)試信息,編譯的時(shí)候,通過(guò) -D 選項(xiàng),就能控制調(diào)試信息是否輸出,可以避免項(xiàng)目發(fā)
布的時(shí)候,再去一行一行刪除調(diào)試信息。
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141559 -
代碼
+關(guān)注
關(guān)注
30文章
4899瀏覽量
70660 -
宏定義
+關(guān)注
關(guān)注
0文章
51瀏覽量
9225 -
define
+關(guān)注
關(guān)注
0文章
16瀏覽量
3933
原文標(biāo)題:不用define,如何定義宏
文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
C語(yǔ)言宏定義使用技巧
C語(yǔ)言中常用的宏定義
C語(yǔ)言中預(yù)定義宏的用法和使用場(chǎng)景
C語(yǔ)言中宏定義的應(yīng)用
C語(yǔ)言中宏定義的使用技巧

C語(yǔ)言中的宏
C語(yǔ)言中的宏是什么
匯總和深挖C語(yǔ)言中宏定義所有的知識(shí)點(diǎn)

C語(yǔ)言中的__attribute__宏定義之section屬性

C語(yǔ)言中的宏定義

評(píng)論