头文件中的"#pragma GCC system_header"是否扩展到包含它的另一个源文件或头文



我需要禁用某个头文件中的所有警告,并且仅禁用该文件。我的编译器版本是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的文件。

就那个文件。

相关内容

  • 没有找到相关文章

最新更新