使用GCC/GMake预编译头文件导致' pragma '警告(Premake)
Precompiled Headers With GCC/GMake Causing `pragma` Warning (Premake)
在我的预制文件中输入:
pchheader("../../"..dir_root.."stdafx.h")
我发现这至少部分有效。(Windows上的ICC调用略有不同。)
在编译时,我只得到一个警告:stdafx.h
../../mylibrary/stdafx.h:1:9: warning: #pragma once in main file
#pragma once
^
我相信这来自GCC编译预编译的头文件(就好像它是某种主文件一样)。所以,这个警告是(kind ?)合理的。
我宁愿不删除#pragma once
,这显然是在stdafx.h
(尽管我认为这会修复警告),因为构建不使用PCH。
这是我唯一的选择吗,还是我还有别的办法?我将此标记为gcc和premake,因为使用任何一种解决方案(例如更改编译参数,以不同的方式调用premake)都可以。
好吧,在c++中,你的主文件(文件与你的主要功能,int main(int argc, char * argv[]
)不应该有#pragma once
,因为它只是头文件。所以似乎你的主要功能是在stdafx.h
,当它不应该是。如果是,把它放在一个。cpp文件中,并包含你的头文件。
这只是一个警告,所以不要担心。
相关文章:
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- 禁止显示有关包含文件中 #pragma 包的警告
- #pragma 警告不适用于 catch 语句
- 如何处理警告 C4177:#pragma 'float_control' 只能在全局范围或命名空间范围内使用
- #pragma警告clang/msvc兼容性
- #pragma警告(disable:XXXX)的行为与预期不符(范围问题)
- 警告:无法识别 #pragma
- #pragma 警告(推送)而不 #pragma 警告(弹出)
- pragma警告(disable:4700)在Visual Studio Express 2013中不起作用
- #数组初始值设定项内部忽略了pragma警告禁用
- 警告 C4995:"CDao数据库":名称已标记为 #pragma 已弃用
- 在 Boost 周围使用"#pragma warning"时的警告 C4503 包括
- 为什么MSVC10忽略我的#pragma警告(禁用:4251)
- 使用GCC/GMake预编译头文件导致' pragma '警告(Premake)
- 为什么在 GCC/C++ 中"pragma GCC diagnostic push"弹出警告?
- 将Qt 5.3应用程序移至Qt 5.5,10k+警告,PRAGMA '-Winconsistent-missing-override'
- 海湾合作委员会不遵守'pragma GCC diagnostic'来压制警告
- 如何禁用特定的未知#pragma警告(GCC和/或Clang)