头文件中的#ifndef 千万不要忽略了头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifndef <标识> #define <标识> ...... ...... #endif <标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h #ifndef _STDIO_H_ #define _STDIO_H_ ......#endif
这里补充一下自己的理解:
由于头文件有关于多种变量以及函数的声明,故在源文件包含的时候,容易造成多重包含,引起变量和函数的重复声明。
当用#ifndef _XXX_X 条件编译时,可以表示如果没有编译过这个标示符,则开始编译一下内容。故在实际的程序编译时,只会编译一次这个内容,编译后则#define _XXX_X的内容已经被编译过了,下次再包含该头文件时,遇到#ifndef _XXX_X语句则不会成立,避免重复编译
对于C++中头文件内使用条件编译的说明
最新推荐文章于 2023-03-02 18:26:16 发布