include預編譯的作用

2021-08-07 16:49:44 字數 820 閱讀 2790

今天看到了乙個非常毀三觀的陣列定義

testarray.c

#include 

char arr[12]=

;void output(char *str)

int main()

wsk.h

// this is wsk.h

[5] = '*',

[11] = '*',

wtf!!!在陣列定義中居然包含了乙個標頭檔案!!!這還了得?我們編譯一下看看會報什麼錯….

我勒個去,這貨居然編過了,這是為什麼呢?我們來看一下#include預編譯巨集的作用。

上述**在編譯器進行預編譯的時候,遇到 #include 「wsk.h」 ,則會把整個 wsk.h 檔案都copy到 testarray.c 中,注意,不一定非要在檔案最開頭,也可以是在檔案中間的位置,因此,在實際編譯 testarray.c 之前,testarray.c 已經被修改為了如下形式:

testarray.c 預編譯後的臨時檔案

#include //抱歉,此處不展開了

char arr[12]=

;void output(char *str)

int main()

深入理解include預編譯原理

1.include 命令的作用 1.1 什麼情況不使用 include 檔案 void test a 檔案 void test a 函式宣告 void test b 其實,這樣的工程,可以不用使用 include 預編譯命令。1.2 什麼情況使用 include 如果工程裡面的函式特別多,那麼按照上...

深入理解include預編譯原理

1.include 命令的作用 1.1 什麼情況不使用 include 檔案 void test a 檔案 void test a 函式宣告 void test b 其實,這樣的工程,可以不用使用 include 預編譯命令。1.2 什麼情況使用 include 如果工程裡面的函式特別多,那麼按照上...

深入理解include預編譯原理

1.include 命令的作用 1.1 什麼情況不使用 include 檔案 void test a 檔案 void test a 函式宣告 void test b 其實,這樣的工程,可以不用使用 include 預編譯命令。1.2 什麼情況使用 include 如果工程裡面的函式特別多,那麼按照上...