C語言 預處理之「 」和「 」的作用

2021-08-15 07:33:23 字數 688 閱讀 1668

「##」在c語言中被稱為連線符(concatenator),它用來連線兩個token為乙個token(token是編譯原理中的概念,編譯器在編譯源程式時,會首先掃瞄源**,將**分解為乙個乙個的token,token可以是c語言的關鍵字,如int、for、while等,也可以是使用者自定義變數,如string、num、a等)。例如下面**中的巨集:

#define lwip_mempool(name, num, size, desc)  memp_##name 

/*巨集定義*/

lwip_mempool

(example, num, size, desc)

/*巨集呼叫*/

memp_example /*巨集展開的結果*/

「#」經常會在c語言的巨集定義中被使用到,「#」的功能是將其後的巨集引數進行字串化(stringfication),簡單說就是將其所引用的巨集變數字串化,即在相應變數的左右各加上乙個雙引號。例如下面**中的巨集:

#define error_if(expression) 

/*巨集定義*/

error_if

(a==b)

/*巨集呼叫*/

/*巨集展開的結果*/

C語言 預處理作用與巨集定義

1.程式的預處理過程就是將預處理指令 可以簡單理解為 開頭的正確指令 轉換為實際 中的內容 替換 2.include,這裡是預處理指令,包含標頭檔案的操作,將所包含標頭檔案的指令替代 3.如果標頭檔案中包含了其他標頭檔案,也需要將標頭檔案展開包含1.define 新的標識 舊的標識 注意這裡加不加分...

C語言預處理

c語言中編譯預處理的三種形式的命令 巨集定義,檔案包含,條件編譯命令。1 巨集定義主要是 define,undef 如下 define pi 3.1415926 不帶引數的巨集定義 define max a,b a b?a b 帶引數的巨集定義 說明 巨集定義在c語言與c 語言中是相通的。下面舉例說...

C語言預處理

預處理 系統自動自動呼叫預處理程式對程式中 號開頭的預處理部分進行處理,處理完畢後可以進城源程式的編譯階段。預定義 一些預定義符號 常用於除錯 file 正在預編譯的源檔名 line 當前行號 只有這個是整數常量,其他是字串常量 function 當前所在函式名 date 當前日期 time 當前時...