禁止显示有关包含文件中 #pragma 包的警告
Suppressing warning about #pragma pack in included file
我正在用clang构建一些代码。这是我正在做的事情的精简版本。(请记住,在削减过程中,我已经删掉了所有不相关的细节,包括任何可能表明我可能真正想要这样做的细节。
噗嗤
:#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpragma-pack"
#pragma pack(push)
#pragma pack(1)
啪��
#pragma pack(pop)
#pragma GCC diagnostic pop
主.c:
#include "push.h"
struct Fred {char x;};
#include "pop.h"
像这样编译它:
clang -Wall -pedantic -c main.c
这样做,我收到一个警告:
tmbp ~/tmp/pushpack % clang -Wall -pedantic -c main.c
main.c:3:10: warning: the current #pragma pack aligment value is modified in the included file [-Wpragma-pack]
#include "pop.h"
^
note: previous '#pragma pack' directive that modifies alignment is here
1 warning generated.
tmbp ~/tmp/pushpack %
在这种情况下,如何禁止显示此警告?如果可能的话,我想通过在 pop.h 中添加一些东西来做到这一点。
我真的不想在全球范围内抑制警告,因为从长远来看,它似乎可能很有用(即使不是当我包含 push.h 和 pop.h 时(。
我不想在 pop.h 的每个包含中添加额外的垃圾,因为在我的非削减实际程序中,因为它们有很多。
我不想只有赤裸裸的#pragma pack(pop)
,因为我更喜欢事物对称。
我不想通过内联 push.h 的内容使它们对称,因为在实践中,它比这里显示的要多一些。
如果有的话,我有什么选择?
Clang 版本:(这是 Xcode 10 附带的版本 - 不要认为这个警告在 Xcode 9 中存在(
tmbp ~/tmp/pushpack % clang --version
Apple LLVM version 10.0.0 (clang-1000.11.45.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
如果您不想看到因包含pop.h
而导致的main.c
生成的警告,则无法恢复pop.h
中的警告选项。恢复"#include "pop.h"之后的警告选项。
相关文章:
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的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)