c++ #ifndef,ifndef和#define,#endif?有何用

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:17:53
希望大家给我一个详细点的解释,或者解释得清楚点。

避免头文件中的内容多次出现,到底属于什么情况。

为什么要避免?

比如说,两个文件,都包含了 IOSTREAM
然后,两个文件合并起来,成为一个,是否就要使用上面的 #ifndef

他究竟是用一个什么原理来实现这个操作的?

这是预处理命令
#ifndef _HEAD_H //就是如果没有定义宏_HEAD_H
#define _HEAD_H //那么就定义宏_HEAD_H

//添加你的头文件内容

#endif //结束if

还有类似的#ifdef #undefine可以从字面意思理解。

加上以上的宏是未了防止头文件被重复引用,当编译器第一次编译头文件的时候,会定义_HEAD_H,然后如果还有文件引用了该头文件,但_HEAD_H已经被定义了,所以就不会在去编译你的头文件添加的内容。

这个就是条件编译

宏命令,他们类似条件语句。

#ifndef -- 如果没有定义什么东西
#define -- 则定义某东西
#endif -- 宏 条件语句结束符号

宏 条件语句 在程序编译的第一阶段执行。执行完,再编译C,C++程序部分。