在主方法的c++中包含保护

Include guards in c++ for main method

本文关键字:包含 保护 c++ 方法      更新时间:2023-10-16

我知道C++中.h文件周围包含保护的目的和用法

  #ifndef FILENAME_H
  #define FILENAME_H
  #endif

但是,我正在尝试理解#ifdef TEST_FILENAME在测试存根中或在用于测试运行类的main()方法周围的用法。

  #ifdef TEST_FILENAME
   void main()
   {
      /////////////////
   }
  #endif

这可能是为了让您可以运行一个有条件的主函数。

如果你在测试,你会想要运行一个测试例程,如果不是,你可能会想要执行你的实际主函数。这允许您在编译时定义宏,以便预处理器可以为您提供正确的main来构建。

一个程序只能有一个main()入口点。

因此,如果这个测试代码在一个将被编译并链接到您的发布可执行文件中的文件中,则需要对它进行条件化,以便它只在特殊的测试构建中编译,否则您的构建将因main()被多重定义而失败,并出现链接错误。

一般来说,这是一种构建测试代码的糟糕方法——测试应该在结构正确的单元测试中进行,而单元测试与生产代码是分开的。