編譯和預處理相關知識點

編譯和預處理相關知識點

GCC

本質:翻譯官,把高級語言翻譯成機器指令

常用選項:

gcc -o 輸出文件名 輸入文件名
gcc -o build 01.c (後綴不能爲其他)
gcc -v -o build 01.c
gcc -l -o  用來指定程序要鏈接的庫,-l參數緊接着就是庫名
gcc -L -o   -L參數跟着的是庫文件所在的目錄名
gcc -E -o
gcc -S -o
gcc -c -o

編譯過程

第一步:編譯 gcc -S -o a.s 01.c
第二步:彙編 gcc -c -o a.o a.s
第三步:鏈接 gcc -o build 01.c

預處理

gcc -E -o a.i 01.c生成a.i

常見錯誤

(1)預處理錯誤:找不到,未定義
解決方案:gcc -I ./dir -o build 01.c
(2)編譯錯誤:語法錯誤
(3)鏈接錯誤:原材料不夠(函數未實現)或者原材料多了(多次實現)
解決方案:尋找標籤是否實現或者只保留一個實現

預處理使用

define 宏替換不進行語法檢查
include
預定義宏 FUNCTION LINE FILE
條件編譯(開關) #ifdef #else #endif
提前定義一個宏:gcc -DABC 等價於#define ABC
宏展開下的#和##:
#define ABC(a)   #a      字符串
#define DAY(a)    myday##a     連接符號
發佈了32 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章