.c 檔案 -> .i 檔案 —> .s 檔案 -> .o 檔案 -> 可執行檔案
預處理 編譯 彙編 鏈結
step1 預處理階段
生成.i檔案
gcc -o helloworld.i helloworld.c -e
標頭檔案在預處理階段都被放置到了.i檔案的上方(#include 去掉了 存在的是所有的.h檔案中的內容)
巨集的替換是不考慮c的語法的, 巨集的替換都是單純的字串替換,並且巨集不管生命在**,作用域是全域性的。
比如下面這個檔案是可以被編譯執行的。
此檔案中的m被替換成了int main(
#include
#define r 10
#define m int main(
m)
巨集函式 程式中變數a作為n(n)的引數被傳入
#include
#define r 10
#define n(n) n * 10
int main()
關於 pragma預處理指令的那些事
pragma一直是沒怎麼用,近日看同事寫的dll用到多次所以抽時間翻一下手冊,記錄一下。pragma region name pragma endregion comment 可以讓你摺疊特定的 塊,從而使介面更加清潔,便於編輯其他 摺疊後的 塊不會影響編譯。你也可以隨時展開 塊以進行編輯等操作。在...
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 當前時...