#ifndef #define #endif的用法总结

    先说结论,这种用法的目的是为了防止重复定义,而不是所谓的重复声明。

   其实这一点也是很容易理解的,头文件的定义本身就是为了引入“声明”的,如果不允许重复声明,那多个文件引用同一个头文件就非法了,这显然是错误的,在C编译中,恰恰是允许也需要重复声明的,只要引用声明了,就可以远程使用该声明对应的对象(变量或函数)。

    假设:

#ifndef xxx 
#define xxx
unsigned char a[]={..........};  
............
#endif
   这里,在头文件中出现了变量定义,这种情况下,这个#ifndef才有了作用,第一次被引用时,该定义能够同时被包含,但是第二次,由于已经define xxx了,所以这个定义就不能被重复包含了,这样就能有效的避免重复定义而报错了,因为编译过程中,声明可以,但是重复定义是不可以的。

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/80727293