c語言編譯器處理時經過的第乙個步驟是預處理,就是從.c檔案處理為.i檔案。在預處理時編譯器做了一些展開替換的處理。
1>標頭檔案展開,即將#include "stdio.h"類似的檔案展開。
2>巨集定義的替換工作,即將程式中的巨集定義內容替換好。
#include"stdio.h"#define r 10
int main()
經過預處理之後**變為
//...stdio.h裡的內容未展示//巨集定義的地方已經替換到程式中
int main()
巨集定義做的替換是整體替換,和語法無關,它不遵循語法規則。
巨集定義一般兩種用法,一種是定義一種常量,另一種是定義乙個巨集函式。
#define n(n,m) n+m//巨集定義int main()
其實經過預處理之後變為
int main()
另一種應用巨集函式,因為巨集定義不會考慮語法,它只是作整體代換,所以可以寫出不考慮變數型別的函式,這一點是他的優點
舉例說明,如下**:
#define n(n,m) n+m//巨集定義int main()
3>條件編譯:有些語句希望在條件滿足時才編譯。
#ifdef 識別符號//程式段1
#else
//程式段2
#endif
當識別符號已經定義時,程式段1才參加編譯
在其使用時和define一樣也是做了乙個替換工作。
C語言 預處理命令
我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...
C語言 預處理命令
一 巨集定義 在 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集定義命令完成的。巨集代換是由預處理程式自動完成的。在 ...
C語言預處理命令
以 開頭的預處理命令。如 include,巨集定義命令 define pi 3.1415926等。在源程式中這些命令都放在函式之外,而且一般放在原始檔前面,它們稱為預處理部分。無參巨集定義 無參巨集的巨集名後不帶引數。其定義的一般形式為 define 識別符號 字串 其中的 表示這是一條預處理命令,...