这是我非常简单的C++函数:
#include <string.h>
void myFunc(void * param)
{
string command;
}
Run Code Online (Sandbox Code Playgroud)
为什么不编译?
% CC -c -o testFunc.o testFunc.C
"testFunc.C", line 6: Error: string is not defined.
1 Error(s) detected.
Run Code Online (Sandbox Code Playgroud)
<string.h>
是从C和定义如C字符串处理函数memcmp
和strcpy
,而不是C++类string
.在标准C++中,标题是<string>
,并且类string
在命名空间中std
.
它没有正确编译它告诉你的原因:
Error: string is not defined.
Run Code Online (Sandbox Code Playgroud)
更改<string.h>
到<string>
.
还要确保使用正确的命名空间.你可以这样做:
using std::string;
Run Code Online (Sandbox Code Playgroud)
要么
std::string command;
Run Code Online (Sandbox Code Playgroud)
更多解释:
<string.h>
用于C中的C字符串<cstring>
用于C++中的C字符串.<string>
适用于C++ std::string
.