我需要禁用某个头文件中的所有警告,并且仅禁用该文件。我的编译器版本是g++-4.8
。我必须使用那个编译器。
我查阅了编译器的文档:g++-4.8系统标题文档支持
上面写着:
GCC处理系统标头时,除
#warning
生成的警告外,所有警告都将被抑制。系统标头中定义的宏在展开时不会受到一些警告的影响。
还有一个指令
#pragma GCC system_header
,它告诉GCC将当前包含文件的其余部分视为系统头,无论在哪里找到它。文件中#pragma
之前的代码不会受到影响#pragma GCC system_header
在主源文件中不起作用
由于英语是我的第二语言,我不清楚最后一句是什么意思。
我想禁用整个单个头文件中的所有警告。这个头文件包含在许多不同的C++源代码文件*.cpp
中。该头文件还包括在其他几个头文件*.h
中,并且这些头文件也包括在其他文件中。
我想知道,如果我把#pragma GCC system_header
放在单个头文件中,#pragma
指令的效果会转移到包括该头的任何文件中吗?因为我不想在包括这个头文件的文件中禁用任何警告。我只想禁用在头文件中定义的结构的警告。
换句话说,#pragma GCC system_header
的效果是适用于整个翻译单元(我不希望这样(,还是只适用于文本编辑器中的单个头文件?
这只是对主要规则的重申:
还有一个指令#pragma GCC system_header,它告诉GCC考虑当前包含文件的其余部分系统头
就是这样。不是其他标头,也不是您编写#include
的文件。
就那个文件。