这是我非常简单的 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.
这是我非常简单的 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.
<string.h>
来自 C 并定义了 C 字符串处理函数,例如memcmp
and strcpy
,而不是 C++ 类string
。在标准 C++ 中,它的标头是<string>
,并且类string
在 namespace 中std
。
它没有编译它告诉你的确切原因:
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
。