不止一次包含头文件

hue*_*hue 3 c header-files

#include <stdio.h>
#include <stdio.h>

int main ()
{
   printf ("hello world");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,编译器不会给包括stdio.h两次的任何警告/错误.为什么会这样?不是功能scanf,printf声明和定义现在的两倍等等?

提前致谢

Mar*_*nen 11

通常,头文件的编写类似于以下示例,以防止出现此问题:

#ifndef MYHEADER
#define MYHEADER

...


#endif
Run Code Online (Sandbox Code Playgroud)

然后,如果包含多次,则第二个实例会跳过内容.

  • 为了增加这个答案,这里的惯例被称为[include guard](http://en.wikipedia.org/wiki/Include_guard). (2认同)