【发布时间】:2022-08-09 12:23:25
【问题描述】:
我正在使用课程所需的特定语法,但是当我在 VS Code 中使用此 C++ 语法时,它不起作用并引发错误。
下面是一个不起作用的语法示例:
error: expected \';\' at end of declaration
int i {0};
^
;
当我将其更改为 int i = 0; 时,错误消失了。
它特别不识别用于设置默认变量值的{} 语法。我在本课程中使用ssh 登录,语法在ssh 中运行良好,但在VS Code 中不起作用。
我试图将我的 VS Code C++ 版本更改为 C++17 by doing the top answer in this thread,但它仍然无法识别语法。
我使用了不正确的语法,还是有办法解决这个问题?
-
语法很好,您可能只是没有告诉编译器正确使用 C++11 或更高版本(
__cplusplus在代码中报告了什么?)。 -
@RemyLebeau 我对 C++ 有点陌生,你能解释一下我如何运行/使用该命令吗?我只是将它写在代码中并编译+运行它吗?我是否在终端中执行命令?
-
@RemyLebeau 当我
cout << __cplusplus;时,它输出:199711。当我用鼠标将鼠标悬停在 VS Code 中的__cplusplus上时,它会显示#define __cplusplus 201703L Expands to: 201703L -
那么很明显你是在 C++98 模式下编译的,这就是语法不起作用的原因,因为 C++98 早于 C++11。 VS Code 是编辑器,而不是编译器。您使用的是哪个确切的编译器?您更改了哪些确切设置以尝试启用 C++11 或更高版本?请明确点。
-
我的猜测是 macOS(因为编译器默认为 c++98)。 VSCode 文档解释了需要在此处设置标准的 2 个位置:https://code.visualstudio.com/docs/cpp/config-clang-mac
标签: c++ macos visual-studio-code c++17