2012-02-03 57 views
0

守卫我知道的目的和包括围绕在C++中.h文件包括在C++中的主要方法

#ifndef FILENAME_H 
    #define FILENAME_H 
    #endif 

但是后卫的使用,我想了解在测试存根的#ifdef TEST_FILENAME使用或者用于测试运行该类的main()方法周围。

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

回答

3

它可能是这样,你可以有一个条件主要功能运行。

如果您正在测试,您需要运行测试例程,否则您可能需要执行实际的主函数。这使您可以在编译期间定义宏,以便预处理器可以为您创建正确的主体。

1

一个程序只能有一个main()入口点。因此,如果此测试代码位于将被编译并链接到您的发行版可执行文件中的文件中,则需要对其进行条件化,以便它仅在特定的测试版本中进行编译,否则您的编译将失败并出现链接错误由于main()被多重定义。

一般来说,这是一种糟糕的方式来构造测试代码 - 测试应该在与生产代码分开的适当结构的单元测试中。