宏定义约cxxtest
我使用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)) {
我没有访问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
添加--no-std选项后,程序无法编译。它可以编译为vs2005下的对象文件。也许我必须在vc6下使用较低版本的cxxtest。 – bucherren 2012-04-25 09:20:13
你最好使用VS2005并忘记VC6;它属于垃圾堆。或者,也许更慈善,你应该解释为什么你需要使用古老的版本。你可能不想使用cxxtest的旧版本(pre-4.0.x);如果你真的必须保持VC6,那肯定值得一试。但是,有一个适中的机会也不起作用。 – 2012-04-25 13:59:05
在我们公司,我们使用vc6构建C++项目,并在2005年构建c#项目。是的,我应该使用旧版本的cxxtest。 Cxxtest v3.8适用于vc6。我想升级cxxtest版本,但显然失败了。 – bucherren 2012-04-26 01:18:10
这听起来很愚蠢,但你有没有在你的测试代码中包含正确的C++头文件?你能显示你遇到麻烦的测试代码吗? – 2012-04-21 17:32:39
感谢您的回复。我编辑了我的帖子。 – bucherren 2012-04-25 06:38:50