如何在Visual Studio 2010中支持includelevel

时间:2011-09-30 04:18:50

标签: visual-studio-2010 include

在学校,我们在Linux上使用c ++ / g ++编译器来支持includelevel。这允许我们编写一个应用程序,包括一个证明函数工作的main,然后将该文件包含在另一个程序中以使用它的函数。理论上说,includelevel会在你包含时阻止代码,这样你就不会复制东西(比如有两个主电源)。有没有办法让Visual Studio 2010识别includelevel?在编译时,它只是说有两个主电源(有一个,但有一个被包含级别阻止)并且无法编译。我一直在评论包含的代码,以便它在VS2010中编译,然后在推送到学校服务器(Linux)编译提交时取消注释。 例如:     // file:sort.cpp

#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;
}

1 个答案:

答案 0 :(得分:0)

我相信你所做的是在与他们测试的功能相同的源文件中编写测试。

虽然这对于简单程序来说可能很方便,但是一旦它变得更复杂,标准做法就是将测试函数提取到单独的源文件中,并将其编译成单独的测试可执行文件(或在某些情况下为DLL)。

我之前使用的一个简单结构是拥有一个实现核心功能的库项目,另一个项目包含main函数并编译为“真正的”程序,并且有一个包含测试的第三个项目以及它自己运行它们的主要功能。

从另一个文件中包含源/实现(.cpp)文件也是非标准的。