預處理器之巨集定義

2021-08-23 14:12:26 字數 541 閱讀 8307

以#開頭的命令都是預處理命令,預處理不是c語言的語句,不能被編譯器編譯。所以在編譯之前需要使用預處理器做檔案的預處理工作。在編譯之前,所有的預處理語句都要被處理(替換或展開)。

eg1:一般巨集定義

#define num 100
eg2:有引數的巨集定義

#define s(a,b) a*b
eg3:寫乙個巨集,返回較大的乙個

#define max(a,b) a>b?a:b
eg4:求一年中有多少秒(忽略閏年)

#define second_year (365*24*60*60)ul
注:帶引數的巨集和函式的區別

巨集展開會使源程式變長,而函式呼叫不會

巨集替換不會占用執行時間,只佔編譯時間,而函式呼叫占用執行時間(分配單元,保留現場,傳遞指,返回)

xcodebuild 如何定義預處理器巨集

您在xcodebuild命令列上傳遞gcc preprocessor definitions。請記住,對於類似shell的單詞拆分和引用處理,將重新評估引數,因此您需要小心,尤其是當您的巨集值不僅僅是簡單的1時 例如,nsstring文字 同樣重要的是在你設定的值內擴充套件gcc preproces...

預處理器之巨集的使用

我們知道c程式在編譯過程之前,c語言預處理器首先對程式 作了了必要的轉換處理。巨集在c程式中是非常有用的,比如我們可以通過修改巨集定義來修改在程式中出現的所有例項。同時通過巨集定義還可以免去函式呼叫帶來的重大系統開銷。雖然巨集定義非常有用,但是巨集定義也是非常容易出錯的。主要表現為以下幾點 1 不能...

C C 預處理器的預定義巨集

符合ansi的預定義巨集 date 表示當前原始檔編譯時的日期,格式為 月 天 年 mmm dd yyyy file 表示當前正在處理的原始檔名稱。line 表示當前正在處理的原始檔的行,可以用 line指令修改。stdc 表示是ansi c標準。只有在編譯器選項指定了 za,並且不是編譯c 程式時...