【发布时间】:2020-03-20 19:52:16
【问题描述】:
我正在用 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> 库。请告诉我如何解决这个问题?
【问题讨论】:
-
你检查你的IDE的编辑器设置了吗?
-
我认为您必须提供minimal reproducible example 以及错误消息的确切文本。
-
_Line、_File、_Func和_Desc是为语言实现保留的标识符。通过在您自己的程序中定义它们,您的程序将具有未定义的行为。为您的变量使用其他名称。 -
当我使用 strlen 函数时,它带有一条红线。虽然项目构建没有错误。 Intellisense 并不完美。它可能有误报。一定是您项目的某些特定因素导致 Intellisense 以这种方式失败。
-
这很难回答,因为您没有以minimal reproducible example 的形式提供完整的信息。您声称您拥有
#include <cstring>,但显示的代码并未证明这一点。您之前的代码中可能还缺少其他内容,但是 - 由于您没有显示任何后续代码 - 没有人能猜到您可能遗漏了什么,或者它如何与 Intellisense 交互。一种可能性是您的 IDE 也很混乱,因此 (1) 执行“构建干净”和 (2) 从头开始重建项目。如果失败,请在#include <cstring>之后添加using namespace std,然后再次清理并重建。
标签: c++ visual-studio-2017 string-function