这是我非常简单的C ++函数:
#include <string.h>
void myFunc(void * param)
{
string command;
}
为什么不编译?
% CC -c -o testFunc.o testFunc.C
"testFunc.C", line 6: Error: string is not defined.
1 Error(s) detected.
答案 0 :(得分:8)
<string.h>
来自C,定义了C字符串处理函数,如memcmp
和strcpy
,而不是C ++类string
。在标准C ++中,标题为<string>
,类string
位于名称空间std
中。
答案 1 :(得分:6)
它没有完全按照它告诉你的原因进行编译:
Error: string is not defined.
将<string.h>
更改为<string>
。
还要确保使用正确的命名空间。您可以通过以下方式执行此操作:
using std::string;
或
std::string command;
更多解释
<string.h>
用于C中的C字符串。<cstring>
适用于C ++中的C字符串。<string>
适用于C ++ std::string
。