在主方法的c++中包含保护
Include guards in c++ for main method
我知道C++中.h文件周围包含保护的目的和用法
#ifndef FILENAME_H
#define FILENAME_H
#endif
但是,我正在尝试理解#ifdef TEST_FILENAME在测试存根中或在用于测试运行类的main()方法周围的用法。
#ifdef TEST_FILENAME
void main()
{
/////////////////
}
#endif
这可能是为了让您可以运行一个有条件的主函数。
如果你在测试,你会想要运行一个测试例程,如果不是,你可能会想要执行你的实际主函数。这允许您在编译时定义宏,以便预处理器可以为您提供正确的main来构建。
因此,如果这个测试代码在一个将被编译并链接到您的发布可执行文件中的文件中,则需要对它进行条件化,以便它只在特殊的测试构建中编译,否则您的构建将因main()被多重定义而失败,并出现链接错误。
一般来说,这是一种构建测试代码的糟糕方法——测试应该在结构正确的单元测试中进行,而单元测试与生产代码是分开的。
相关文章:
- 为什么您需要C++头文件的包含保护
- C2011: 'Card':"类"类型重新定义(尽管使用了包含保护并且没有在文件中重新定义.cpp类)
- 更智能地在C++中包含保护,以便在不同的命名空间中多次包含标头
- 使用 #pragma 一次,#ifndef 在同一文件中包含保护
- 保护某些包含位置
- 可以将标头文件包含在多个源文件中,而无需重复保护
- 确保每个标头在大型项目中使用唯一的包含保护
- 在atom中生成c++包含头保护
- 为什么在2.CPP文件中包含此头文件(带头保护)会导致命名冲突
- C++包含保护和多个定义错误
- 带有正确包含保护的C++重复符号链接器错误
- 函数的多个定义,即使在包含保护中定义
- 是否可以在没有包含保护的情况下编写头文件,并且没有多个定义错误
- 包含保护:为什么C++编译器不自动只包含每个头文件一次?
- 在主方法的c++中包含保护
- c++包含保护
- 在Visual Studio中插入包含保护的快速方法
- Xcode 4.2 - c++包含保护结构
- 氧要求包含保护文件
- 为什么 C/C++ 没有内置包含保护功能?