內容:檢視預處理後的程式,最近實習的時候導師閒時問我有沒有看過預處理是做了啥呀?想起來這個順便記一下吧哈哈.
準備好我們的程式:
#include
#define print printf("\n start main\n");
const
int b =5;
intmain
(void
)//this is the main function !
printf
("%d"
, a +5)
;printf
("%d"
, b +5)
; c = a;
c = b;
return0;
}
檢視預處理結果:
1.編譯時不要一步到位
gcc -e test1.c -o test1.i
2.檢視結果
vim test1.i
進來後會看到密密麻麻的一堆**,因為stdio.**件被展開了,此時如果你去翻要很久才能翻到底部看到你的**被預處理的結果,所以使用命令g直接到尾部即可
尾部:
可以看到這個是我們的預處理結果:
1.注釋被刪除了
2.新增了行號
3.巨集定義被替換
4.常量在gcc預處理預設情況下並沒有直接進行常量替換
c 的預處理程式指令
c 中的預處理功能主要是指可以在c 源程式中包含各種編譯指令,用這些編譯命令在 編譯前執行,所以這些命令被稱為預處理命令,實現c 的預處理功能。預處理指令是編譯系統的控制命令,編譯系統根據其要求先對 進行優化,然後在進行編譯,使程式變得簡練清晰。常見的預處理命令有 檔案包含命令 條件編譯命令和巨集定...
程式的編譯及預處理
編譯預處理是指c語言對源程式在正常編譯之後先執行源程式中的預處理命令。預處理後源程式在被正常編譯,從而得到目標 預處理是編譯的一部分,是編譯中最先執行的部分。預處理 在c語言中帶 的行都是預處理命令,後面不加 結束符。多數編譯的預處理都放在程式頭,也可以根據需要放在的任何位置。巨集定義 在c語言中允...
程式的環境和預處理
原始檔 編譯器 目標檔案 鏈結器 鏈結庫 可執行程式 編譯器需要進行預處理,編譯,彙編。而聯結器需要將目標檔案和c庫檔案進行鏈結 形成可執行程式。預處理需要進行標頭檔案展開,去注釋,巨集替換,條件編譯,編譯是 將c變成彙編 彙編是將彙編 變成二進位制目標檔案。1.預處理 選項 gcc e test....