【问题标题】:C++ VS Code not recognizing syntax, unable to run codeC++ VS Code 无法识别语法,无法运行代码
【发布时间】: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


【解决方案1】:

添加到上面的评论中,这就是解决我的问题的原因:

转到此链接:https://code.visualstudio.com/docs/cpp/config-clang-mac

转到该部分macOS 上的 Clang并向下滚动到故障排除.请按照本段中的步骤操作:

“如果您看到提及“C++11 扩展”的构建错误,您可能没有更新您的 tasks.json 构建任务以使用 clang++ 参数 --std=c++17。默认情况下,clang++ 使用 C++98 标准,该标准不支持 helloworld.cpp 中使用的初始化。确保将 tasks.json 文件的全部内容替换为 Run helloworld.cpp 部分中提供的代码块。”

您将需要复制粘贴此确切代码并替换 tasks.json 文件夹中的代码:

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "C/C++: clang++ build active file",
      "command": "/usr/bin/clang++",
      "args": [
        "-std=c++17",
        "-stdlib=libc++",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
      ],
      "options": {
        "cwd": "${workspaceFolder}"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "Task generated by Debugger."
    }
  ]
}

要找到 tasks.json 文件夹,请转到您的程序文件,执行 Command + Shift + . 以查找隐藏文件 > .vscode > tasks.json > 将文件中的所有代码替换为我提供了。它将 C++ 编译器更新为使用可识别语法的更新版本的 C++。

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2021-08-26
    • 2020-09-08
    • 1970-01-01
    • 2022-10-05
    • 2021-12-03
    • 2022-10-22
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多