C語言 預處理器

2021-10-24 22:19:48 字數 757 閱讀 8585

3 條件編譯

4 檔案包含include

5 其他指令

預處理階段會執行這些指令。

file 進行編譯的源檔名

line 檔案當前的行號

date 檔案被編譯的日期

time 檔案被編譯的時間

//#define suqre(x) x*x

如果乙個現存的名字需要重新定義,那麼舊的定義首先必須要用#undef 來移除。

# if 

# elif

# endif

# if define(symbol)

# elif !define(symbol)

# endif

更加清晰的顯示def

# include
# include "a.h"

# include "b.h"

如果a和b都包含x.h的話那麼就會形成多重包含,解決這個問題的方法就是使用條件編譯

# ifndef _x_h_

#define _x_h_ 1 //寫成1 和不寫成1的意義一樣,表示符號已經被定義。

/*header file*/

# endif

這樣多重包含的危險就會被消除,當頭檔案第一次被包含時,被正常處理,但是如果再次被包含的話,該標頭檔案就不會被執行。

# progma

C語言 預處理器

如果想在下一行延續指令,則在當前行末尾使用 字元 帶引數的巨集 define max x,y x y x y define is even n n 2 0 則i max j k,m n if is even i i 將被替換為 i j k m n j k m n if i 2 0 i 巨集的替換列表...

C語言 預處理器

指令 描述 define 定義巨集 macro include 包含乙個源 檔案 undef 取消已定義的巨集 ifdef 如果巨集已經定義,則返回真 ifndef 如果巨集沒有定義,則返回真 if如果給定條件為真,則編譯下面 else if 的替代方案 endif 結束乙個if.else條件編譯塊...

C語言 預處理器

6 gcc編譯器檢視替換後的編碼 7 標頭檔案相互包含導致的重定義錯誤 指令 描述 define 定義巨集 include 包含乙個源 檔案 undef 取消已定義的巨集 ifdef 如果巨集已經定義,則返回真 ifndef 如果巨集沒有定義,則返回真 if如果給定條件為真,則編譯下面 else i...