2012-04-21 62 views
1

我使用vc6下的cxxtest4.0.3来做测试。起初,编译器报告strcmp不是std的成员。在将CXXTEST_OLD_STD宏添加到项目设置后,编译器在“CXXTEST_STD(string)_s;”行报告缺少字符串的类型信息。宏定义约cxxtest

我应该如何设置宏定义?先谢谢了。

下面是示例代码:

#include <cxxtest/TestSuite.h> 
class CSimpleTest : public CxxTest::TestSuite 
{ 
public: 
    void testCxx(void){TS_ASSERT(10 == 0); } 
}; 

以下是错误消息:
错误C2039: '的strcmp':不是 'STD'
在cxxtest \ testmain.h线的成员报告错误消息:

if ((CXXTEST_STD(strcmp)(argv[i],"-h")==0) || (CXXTEST_STD(strcmp)(argv[i],"--help")==0)) { 
+0

这听起来很愚蠢,但你有没有在你的测试代码中包含正确的C++头文件?你能显示你遇到麻烦的测试代码吗? – 2012-04-21 17:32:39

+0

感谢您的回复。我编辑了我的帖子。 – bucherren 2012-04-25 06:38:50

回答

1

我没有访问MS Visual Studio 6,但是这不是古代的一点吗?它于1998年6月发布,根据Wikipedia,第一个C++标准于1998年11月发布。所以,我怀疑你的C++编译器太旧了,以至于cxxtest不支持。

你可以看一下选项cxxgentest

--no-std    Do not use standard library (even if found in tests). 

您可以检查其他选项以cxxgentest --help


它是没有多大帮助的告诉你,cxxtest 4.0.3找到工作在MacOS X 10.7.3与G ++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00),但它确实—或者,至少,你的示例程序编译成目标文件,而不警告下:

bin/cxxtestgen -o cxt.cpp test.simple.cpp 
g++ -I. -c -Wall -Wextra -o cxt.o cxt.cpp 
+0

添加--no-std选项后,程序无法编译。它可以编译为vs2005下的对象文件。也许我必须在vc6下使用较低版本的cxxtest。 – bucherren 2012-04-25 09:20:13

+0

你最好使用VS2005并忘记VC6;它属于垃圾堆。或者,也许更慈善,你应该解释为什么你需要使用古老的版本。你可能不想使用cxxtest的旧版本(pre-4.0.x);如果你真的必须保持VC6,那肯定值得一试。但是,有一个适中的机会也不起作用。 – 2012-04-25 13:59:05

+0

在我们公司,我们使用vc6构建C++项目,并在2005年构建c#项目。是的,我应该使用旧版本的cxxtest。 Cxxtest v3.8适用于vc6。我想升级cxxtest版本,但显然失败了。 – bucherren 2012-04-26 01:18:10