2012-02-03 39 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()被多重定義。

一般來說,這是一種糟糕的方式來構造測試代碼 - 測試應該在與生產代碼分開的適當結構的單元測試中。