2012-04-21 73 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