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...