1)不得使用它們,但你已經在1號線
#include <stdio.h>
這就是你看到來自哪個包括他們。嘗試將其刪除以查看差異。
2)預處理器讀取您的C文件並處理您聲明的所有預處理器指令。所有預處理器指令都以'#'符號開頭。 '#include'將用給定文件的內容替換這一行。你也有經典的'#ifndef'和'#define'指令。後者等於「if」語句,其允許激活的碼的一部分僅當符號被定義
#ifndef _SOME_SYMBOL_
#define _SOME_SYMBOL_
#ifndef WIN32
#include <some_file.h>
#else
#include <some_other_file.h>
#endif
int main() { return 0;}
#endif //endof _SOME_SYMBOL_
#ifndef _SOME_SYMBOL_
#define _SOME_SYMBOL_
// this second function is ignored
int main() { return 0;}
#endif //endof _SOME_SYMBOL_
當預處理器讀取上述文件中,符號「_SOME_SYMBOL_」是未知的,所以預處理器初始化它。接下來它包括文件是否知道WIN32
。通常這種符號是通過命令行傳遞的。所以你的代碼的一部分被動態激活或停用。
預處理程序輸出這個
void some_other_function_from_some_other_file(){}
int main() { return 0;}
它從字面上打開包含文件,並在原地複製內容。如果''還包含其他一些文件,那些文件也會被複制,等等。這就是爲什麼你有這麼多東西,你不認爲你要求。 –
BoBTFish