可以在 VScode 中解决这个问题吗?#pragma 一旦在主文件中 [-Wpragma-once-outside-header]

Cha*_*ith 7 c++ visual-studio-code

使用 VScode,如何修复此错误?

#pragma once in main file [-Wpragma-once-outside-header]
Run Code Online (Sandbox Code Playgroud)

更新: 在 VScode 中显示:

在此输入图像描述

再次更新: 这是我当前的 VScode 设置c_cpp_properties.json

{
  "configurations": [
    {
      "name": "Mac",
      "includePath": ["${workspaceFolder}/**"],
      "defines": [],
      "macFrameworkPath": [
        "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks"
      ],
      "compilerPath": "/usr/bin/clang",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "clang-x64"
    }
  ],
  "version": 4
}
Run Code Online (Sandbox Code Playgroud)

小智 2

鉴于没有答案,并且考虑到我也花了一些时间试图解决这个问题,所以就这样吧。

在 Visual Studio Code 中,编译设置默认在tasks.json中构建(“终端”>“配置默认构建任务”>“g++.exe () ”)。在 VS Code 2020 中是这样的:

{
"version": "2.0.0",
"tasks": [
    {
        "type": "shell",
        "label": "g++.exe build active file",
        "command": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\g++.exe",
        "args": [
            "-g",
            "${workspaceFolder}\\*.cpp",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe"
        ],
        "options": {
            "cwd": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin"
        },
        "problemMatcher": [
            "$gcc"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

}

(我使用 mingw-64 来支持gcc编译器,因此根据您使用的编译器,“command”“cwd”可能有不同的路径。)

关键部分是:“${file}”,它是编辑器中活动文件(活动选项卡)的名称

"args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe"
        ],
Run Code Online (Sandbox Code Playgroud)

如果您正在处理多个文件,至少有一个标头(.h 或 .hpp)和一个主文件(.cpp),VS Code 会将该活动文件(.h 或 .hpp)视为主文件(.cpp)。 cpp)。因此,您需要将其更改为:"${workspaceFolder}\*.cpp"

"args": [
            "-g",
            "${workspaceFolder}\\*.cpp",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe"
        ],
Run Code Online (Sandbox Code Playgroud)