如何在文本编辑器中处理 [-Wc++11-extensions]

How to deal with [-Wc++11-extensions] in the text editor

本文关键字:处理 -Wc++11-extensions 编辑器 文本 文本编辑      更新时间:2023-10-16

当我尝试将 myCurrentTry 初始化为 1 并将 myMaxTry 初始化为 5 时,我遇到了警告,错误是:

非静态数据成员的类内初始化是 C++11 扩展 [-WC++11-扩展]

实现此目的的代码是:

class starUFO{
public:
void Reset();
int getMaxTries();
int getCurrentTry();
bool isGameWon();
bool checkGuessValidity(string);
private:
int myCurrentTry = 1;
int myMaxTries = 5;
};

我听到人们说"尝试使用 -std=c++11 编译",这确实消除了我的命令行中的警告,但我想修复 VS Code 配置,所以它不会将其视为警告,我有最新的 VS Code,但似乎有一个更深层次的问题。

编写一个构造函数并在那里初始化您的成员变量:

class starUFO
{
private:
int myCurrentTry;
int myMaxTries;
public:
starUFO()
:   myCurrentTry(1),
myMaxTries(5)
{
}
...
};

要告诉 VSCode 您使用的是哪个C++标准,请打开命令面板 (Ctrl+Shift+P(,选择"C/C++:编辑配置 (UI(",向下滚动并更改"C++标准"下拉列表。 在这种情况下,请选择"c++11"或更高版本。

这假设您使用的是"智能感知"引擎,而不是较旧的"标记解析器"引擎:转到 C/C++ → C/→"C_Cpp:智能感知引擎"的文件→首选项→设置,并确保将其设置为"默认"。

这些选项存在于 VSCode 1.37.1 和 C/C++ 扩展 0.25.1(又名"cpptools"(中。 我不知道它们是什么时候引入的。