導航:
1. gcc編譯
2. 預處理
----->x<------------->x<--------------->x<--------------->x<------------->x<-----
1. gcc編譯
-- 1.0 預處理 gcc -E [.c --> .i ] 展開宏定義.
-- 1.1 編譯 gcc -S [ .c --> .s ]
-- 1.2 匯編 gcc -c [ .s --> .o ]
-- 1.3 鏈接 gcc -o [*.o --> bin] 鏈接了系統庫.
-- 1.4 手動鏈接庫文件 -I 比如我拿到了一個私庫,沒有提供源碼只提供了一些接口.那么在使用后編譯的時候
需要手動導入,就是庫的使用. -I路徑. 在后文,我們自己會生成庫文件,靜態庫和動態庫,這個很基礎,一定要學好.
-- 1.5 預處理開關 gcc -Dxxx 打開預處理的選項.!!
2.預處理
2.1 #include
#include "" 和 #include <> 的區別. <>只尋找系統庫.不尋找用戶頭文件.
2.2 #define
(1) 替換: #define 宏名 宏體 在替換過程中不進行語法檢查,所以宏體運算盡量加().
比如: #define A 3+2
a = 4*A --> 4*3+2 xx #define A (3+2)
(2) 宏函數 #define ABC(x) (5+x)
2.3 #ifdef #ifndef #else #endif
(1) 條件預處理
應用:調試版本和發行版本的切換
(2) # 和 ##
define ABC(x) #x 實際上是轉換成"x" 字符串
define ABC(x) day##x -->dayx 就是一個連接符,把day當前前綴再展開.
define:
int main() { #ifdef ABC printf("我是調試信息\n"); #endif printf("我是正常信息\n"); return 0; }