【C語言進階】宏定義里面使用#define會怎么樣?
這個問題,學過C語言的你,了解過嗎?
1 問題描述
**大家都知道在C語言中,使用 **#define 進行宏定義,那么如果宏定義里面又出現 #define 呢?
這是宏定義的嵌套寫法嗎?
這種寫法有沒有問題?
2 問題驗證
為此,我們寫一段測試代碼驗證下:
?
#include
?
#define TEST_MACRO_1 100
#define TEST_MACRO_2 #define xxx
?
int main(int argc, const char *argv[])
{
printf("test = %d\\\\\\\\n", TEST_MACRO_2);
?
return 0;
}
我們編譯運行下看看:

**注意看,這里的宏定義壓根就是 ** 語法錯誤 ,也就是說在C語言里面就不支持宏定義的定義體里面又 #define 這樣的字眼。
3 總結
- **C語言中使用 **#define 定義一個宏定義;
- **但是宏定義的定義體里面,不能再次出現 **#define 這種關鍵字,否則將會報語法錯誤。
4 更多分享
[架構師李肯]
架構師李肯 ( 全網同名 ),一個專注于嵌入式IoT領域的架構師。有著近10年的嵌入式一線開發經驗,深耕IoT領域多年,熟知IoT領域的業務發展,深度掌握IoT領域的相關技術棧,包括但不限于主流RTOS內核的實現及其移植、硬件驅動移植開發、網絡通訊協議開發、編譯構建原理及其實現、底層匯編及編譯原理、編譯優化及代碼重構、主流IoT云平臺的對接、嵌入式IoT系統的架構設計等等。擁有多項IoT領域的發明專利,熱衷于技術分享,有多年撰寫技術博客的經驗積累,堅信【知識改變命運,技術改變世界】!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
183文章
7644瀏覽量
145570 -
函數
+關注
關注
3文章
4417瀏覽量
67501 -
宏定義
+關注
關注
0文章
51瀏覽量
9412 -
define
+關注
關注
0文章
16瀏覽量
4127
發布評論請先 登錄
相關推薦
熱點推薦
C語言中實現函數宏的三種方式
]
[tr][td]4. ({}) 方式
({}) 為 GNU C 擴展的語法,非 C 語言的原生語法。
INT_SWAP 宏使用 ({}) 封裝后形態如下:
#
發表于 12-29 07:34
請問如何實現C語言訪問MCU寄存器?
MCU的寄存器。而IAR和CodeVisionAVR編譯器對ANSI C進行了擴充,都定義了新的數據類型,是C語言可以直接訪問MCU的有關寄存器,例如,IAR中:
SFR_B(DD
發表于 12-26 07:00
如何用好 C 語言函數的返回值?
可能會比較復雜,不同的輸入,常常產生不同的輸出結果。
C語言函數的返回值
C語言函數可以通過返回值表示輸出結果,例如 log() 函數的返回值會
發表于 12-25 07:17
#define預編譯的指令
,所以在編譯器眼中實際上上述等式的樣子如下
[*]float CirCle_Area = 3.14 * r*r;
[*]
[*]//再例如有時候大家喜歡寫一些宏定義“函數”
[*]#define MIN
發表于 12-05 07:29
C語言程序的結構
,87LPC764有4KB的Flash ROM,而筆者的程序量只有2KB多點,因而第一個想法是改用C語言作為主要的開發語言,應該不至于導致代碼空間不夠用。其次,考慮到需要定時功能的模塊(或稱任務,以下統稱任務
發表于 11-26 08:12
C語言的常量介紹
在程序執行過程中,值不發生改變的量稱為常量。
mtianyan: C語言的常量可以分為直接常量和符號常量。
直接常量也稱為字面量,是可以直接拿來使用,無需說明的量,比如:
整型常量:13、0
發表于 11-24 07:12
C語言宏拼接運算符典型使用
在C語言中,##運算符(稱為[size=16.002px]標記拼接運算符)用于宏定義中將兩個標記(token)拼接成一個新的標記。它在預處理階段處理,常用于動態生成變量名、函數名或類型
發表于 11-20 08:27
C語言和單片機C語言有什么差異
語言的功能特性外,它可以很好的操作底層的硬件接口。在C語言的基礎上,如果你把一些單片機的端口或特殊功能寄存器加于定義,使用的時候會更加方便,
發表于 11-14 07:55
利用C語言union特性來定義RGB565格式
本次分享的內容是利用C語言union特性來定義RGB565格式
1)前言
在做視覺相關的任務時,相機的輸入一般會是RGB565(uint16_t)的格式,而我們需要把它顯式轉換成RGB三通
發表于 10-30 08:26
SConscript結果與rtconfig.h中宏定義相反,是什么原因呢?
當我在rtconfig.h中把宏定義注釋時,添加了構建
當我取消宏定義注釋時,反而排除了構建
SConscript結果與rtconfig.h中宏
發表于 09-23 06:01
【C語言進階】宏定義里面使用#define會怎么樣?
評論