面試期間,面試官都會問這麼乙個問題,你知道預處理都幹了什麼嘛?
那麼,預處理到底幹了什麼呢?我翻了很多的部落格,總結為以下幾點:
1.標頭檔案展開:即將包含的標頭檔案插入到#include的位置
2.替換#define
3.條件編譯
4.刪除注釋
5.新增檔案標識
下面是乙個簡單地例子:
#include int main()
儲存,gcc -e 2_29_test.c -o test.i
結果如下
# 1 "2_29_test.c"
# 1 ""
# 1 ""
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "" 2
# 1 "2_29_test.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 27 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 367 "/usr/include/features.h" 3 4
# 1 "/usr/include/i386-linux-gnu/sys/cdefs.h" 1 3 4
# 410 "/usr/include/i386-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4
# 411 "/usr/include/i386-linux-gnu/sys/cdefs.h" 2 3 4
# 368 "/usr/include/features.h" 2 3 4
# 391 "/usr/include/features.h" 3 4
# 1 "/usr/include/i386-linux-gnu/gnu/stubs.h" 1 3 4
# 1 "/usr/include/i386-linux-gnu/gnu/stubs-32.h" 1 3 4
# 8 "/usr/include/i386-linux-gnu/gnu/stubs.h" 2 3 4
# 392 "/usr/include/features.h" 2 3 4
# 28 "/usr/include/stdio.h" 2 3 4
由於太多不再多新增,讀者可自行嘗試
下面是主函式
# 3 "2_29_test.c"
int main()
php預處理 php預處理是什麼
可以把php預處理看作是想要執行的sql的一種編譯過的模板,它可以使用變數引數進行定製。php預處理的好處 1 查詢僅需解析 或預處理 一次,但可以用相同或不同的引數執行多次。當查詢準備好後,資料庫將分析 編譯和優化 執行該查詢的計畫。對於複雜的查詢,此過程要花費較長的時間,如果需要以不同引數多次重...
AfxBeginThread 幹了什麼?
跟一跟afxbeginthread的原始碼就可以很容易的發現,它呼叫了 beginthreadex,注意這傢伙傳遞的可不是你傳進去的函式函式指標,它傳的是 afxthreadentry和乙個 afx thread startup的結構,那我們的函式指標和引數呢?哦,原來都被封裝到 afx threa...
昨天我幹了什麼
昨天,墮落了一天,待在宿舍,沒有去實驗室。上午,10點多才起床,然後看了下電影 復仇者聯盟 下午接著看完,又看了 雷神2 感覺這幾部電影 雷神1 復仇者聯盟 雷神2 挺不錯的,是乙個系列,說是科幻,我覺得有點像神話,但又跟現實生活有很大聯絡,故事情節和場景設計都很不錯,看著挺過癮的。我們國家很早就有...