为什么标识符 'strlen' 未定义?
Why identifier 'strlen' is undefined?
我正在用 C++ 编写程序。当我使用 strlen
函数时,它有一条红线下划线。虽然项目构建没有错误。这就是我使用此功能的方式。 (顺便说一句,strcpy
也有下划线)。
Exception::Exception(int _Line, char* _File, char* _Func, char* _Desc)
{
Line = _Line;
int size = strlen(_File) + 1;
File = new char[size];
strcpy(File, _File);
Func = new char[size];
strcpy(Func, _Func);
Desc = new char[size];
strcpy(Desc, _Desc);
}
并且我在文件的开头声明了 <cstring>
库。请告诉我如何解决这个问题?
在 VS 编辑器中为代码下划线的系统称为 IntelliSense,它使用的代码与编译器本身并不相同(或者至少几年前我上次使用它时没有使用)。有时会感到困惑。
尝试 std::strlen
,重新组织代码、包含或其他内容。
正如您在 documentation for strlen()
中所读到的,strlen()
在 string.h
中定义,C++ 对应的 std::strlen()
在 cstring
中定义。
因此,要消除错误波浪线,请尝试添加上述 headers 之一。
#include <cstring>
...
std::strlen()
我正在用 C++ 编写程序。当我使用 strlen
函数时,它有一条红线下划线。虽然项目构建没有错误。这就是我使用此功能的方式。 (顺便说一句,strcpy
也有下划线)。
Exception::Exception(int _Line, char* _File, char* _Func, char* _Desc)
{
Line = _Line;
int size = strlen(_File) + 1;
File = new char[size];
strcpy(File, _File);
Func = new char[size];
strcpy(Func, _Func);
Desc = new char[size];
strcpy(Desc, _Desc);
}
并且我在文件的开头声明了 <cstring>
库。请告诉我如何解决这个问题?
在 VS 编辑器中为代码下划线的系统称为 IntelliSense,它使用的代码与编译器本身并不相同(或者至少几年前我上次使用它时没有使用)。有时会感到困惑。
尝试 std::strlen
,重新组织代码、包含或其他内容。
正如您在 documentation for strlen()
中所读到的,strlen()
在 string.h
中定义,C++ 对应的 std::strlen()
在 cstring
中定义。
因此,要消除错误波浪线,请尝试添加上述 headers 之一。
#include <cstring>
...
std::strlen()