在我的 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.
这是我唯一的选择,还是我还能做些什么?我正在标记这两个 gcc和 premake ,因为使用任一解决方案(例如更改编译参数,以不同方式调用 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/