2011-09-30 135 views
0

在學校我們使用Linux上的C++/g ++編譯器來支持includelevel。這使我們可以編寫一個應用程序,包括一個能夠證明功能正常工作的主程序,然後將該文件包含在另一個程序中以使用它的功能。理論是,includelevel會在你包含的時候阻止代碼,這樣你就不會複製東西(比如有兩條主線)。有沒有辦法讓Visual Studio 2010識別includelevel?編譯時,它只是表示有兩條市電(其中有一條,但有一條被封鎖),但無法編譯。我一直在評論包含的代碼,以便它在VS2010中編譯,然後在推送到學校服務器(Linux)進行編譯提交時取消註釋。 例如: //文件:sort.cpp如何在Visual Studio 2010中支持includelevel

#include <iostream> 
using namespace std; 

void BubbleSort(int arr[], int numitems, int &bcost); 
    // Fancy sorting function description 


#if __INCLUDE_LEVEL__ < 1 
int main() 
{ 
    //fancy program that proves the sorting function works 
    return 0; 
} 
#endif 

void BubbleSort(int arr[], int numitems, int &bcost) 
{ 
    // Fancy sorting function code 
} 

---------------------------------------------------------- 

// file: myapp.cpp 

#include <iostream> 
#include "sort.cpp" 
using namespace std; 

int main() 
{ 
    //fancy application code that uses functions from the sort program 
    return 0; 
} 

回答

0

我相信你正在做的是寫在同一個源文件,因爲他們測試功能測試(S)。雖然這對於一個簡單的程序來說可能非常方便,但一旦變得更加複雜,標準做法是將測試函數提取到單獨的源文件中,並將其編譯爲單獨的測試可執行文件(或者在某些情況下爲DLL) 。

我之前使用過的一個簡單結構是具有一個實現核心功能的庫項目,另一個包含主函數並編譯爲「真實」程序的項目,並且有第三個項目包含測試和運行它們的主要功能。

包含另一個源/實現(.cpp)文件也是非標準的。

相關問題