預處理幹了什麼

2021-10-03 08:52:34 字數 1330 閱讀 7170

面試期間,面試官都會問這麼乙個問題,你知道預處理都幹了什麼嘛?

那麼,預處理到底幹了什麼呢?我翻了很多的部落格,總結為以下幾點:

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 挺不錯的,是乙個系列,說是科幻,我覺得有點像神話,但又跟現實生活有很大聯絡,故事情節和場景設計都很不錯,看著挺過癮的。我們國家很早就有...