相关疑难解决方法(0)

gcc 预编译头文件:主文件中的 pragma once

我创建了一个头文件。一些简单的如下。

#pragma once

#include <iostream>

template<typename T>
void say(T t) {
    std::cout << t << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

然后用于g++创建gch带有g++ hello.h. 它给了我这个警告->

pch.h:2:9: warning: #pragma once in main file
    2 | #pragma once
      |         ^~~~
Run Code Online (Sandbox Code Playgroud)

但是gch创建的文件和预编译的头文件工作正常。如果我使用标题守卫,这个错误就会消失。

我在这里做错了吗?

c++ g++ pragma precompiled-headers

9
推荐指数
1
解决办法
2994
查看次数

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

使用 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)

c++ visual-studio-code

7
推荐指数
1
解决办法
8135
查看次数