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