C語言預處理那些事

2021-07-05 08:52:29 字數 620 閱讀 1398

.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 當前時...