在 Eclipse 中,每当我创建一个新的 C++ 类,或者C头文件中,我得到以下类型的结构。假设我创建头文件 example.h,我得到:
/*Comments*/
#ifndef EXAMPLE_H_
#define EXAMPLE_H_
/* Place to put all of my definitions etc. */
#endif
我认为 ifndef 是说,如果未定义 EXAMPLE_H_,请定义它,这可能很有用,具体取决于您使用什么工具来编译和链接项目。不过,我有两个问题:
这很常见吗?我不常看到它。使用该标题是一个好主意,还是应该直接跳到定义代码。
EXAMPLE_H_ 到底是什么?为什么不是 example.h,或者只是示例?这有什么特别的吗,或者可能只是 Eclipse 更喜欢自动构建项目的一个产物?
这是一个常见的构造。目的是在翻译单元中只包含一次头文件的内容,即使物理头文件被包含多次。例如,如果您将标头直接包含在源文件中,并且也通过另一个标头间接包含该标头,则可能会发生这种情况。
将 #ifndef 包装器放在内容周围意味着编译器仅解析标头的内容一次,并避免重新定义错误。
某些编译器允许“#pragma Once”执行相同的操作,但 #ifndef 构造在任何地方都适用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)