c++ - 使用 GCC/GMake 的预编译 header 导致 `pragma` 警告(预制作)

标签 c++ gcc gnu-make premake

在我的 Premake 文件中:

pchheader("../../"..dir_root.."stdafx.h")

我发现这至少部分有效。 (Windows 上的 ICC 的调用有些不同。)

编译时,我只收到一个警告:

stdafx.h
../../mylibrary/stdafx.h:1:9: warning: #pragma once in main file
 #pragma once
         ^

我相信这来自 GCC 编译预编译头文件(就好像它是某种主文件)。所以,这个警告是(有点?)合理的。

我宁愿不删除 #pragma once ,它显然在 stdafx.h 中(尽管我想这会修复警告),因为构建不使用PCH.

这是我唯一的选择,还是我还能做些什么?我正在标记这两个 ,因为使用任一解决方案(例如更改编译参数,以不同方式调用 Premake)都可以。

最佳答案

好吧,在 C++ 中,您的主文件(包含您的主函数的文件 int main(int argc, char * argv[])不应该有 #pragma once 因为它仅适用于头文件。所以看起来您的主要功能似乎在 stdafx.h 中,但它不应该在。如果是,请将其放在 .cpp 文件中并包含您的那里有头文件。

虽然这只是一个警告,所以不要担心。

关于c++ - 使用 GCC/GMake 的预编译 header 导致 `pragma` 警告(预制作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005279/

相关文章:

c++ - 在 Qt 中包含附加目录

c++ - 可变参数模板的部分特化

image - 无法编译第一个 opencv 程序, '/usr/bin/ld: cannot find -lcv'

windows - 在 makefile 中运行命令并将 STDERR/STDOUT 打印到终端和文本文件

c++ - 球体的 OpenGL UV 贴图(有接缝)

c++ - 如何使用 openframework 的 ofMesh 正确导出 .obj?

c - 头文件中声明说明符错误中的两个或多个数据类型

c - *.hxx 中声明的 void 函数,在 *.cxx 中定义但在 *.c 中未定义

c++ - GNU make 有时不在 VPATH 中声明的文件夹中搜索

linux - 对于 Makefile 变量的每个目标