0

我需要禁用某个头文件中的所有警告,并且只禁用该文件。我的编译器版本是g++-4.8. 我必须使用那个编译器。

我查看了该编译器的文档: g++-4.8 documentation support for System-Headers

这个已经写完了:

#warning在 GCC 处理系统标头时,所有警告(由 生成的警告除外)都会被抑制。系统标头中定义的宏在扩展时不受一些警告的影响。

还有一个指令 ,#pragma GCC system_header它告诉 GCC 将当前包含文件的其余部分视为系统头,无论它是在哪里找到的。文件中 之前的代码#pragma不会受到影响。#pragma GCC system_header在主源文件中无效。

由于英语是我的第二语言,我不清楚最后一句话是什么意思。

我想禁用整个单个头文件中的所有警告。该头文件包含在许多不同的 C++ 源代码文件*.cpp中。这个头文件也被其他几个头文件*.h所包含,而那些头文件也被其他文件所包含。

我想知道,如果我将 放在#pragma GCC system_header单个文件中,该#pragma指令的效果是否会转移到包含该头文件的任何文件中?因为我不想禁用包含此头文件的文件中的任何警告。我只想对在该头文件中定义的结构禁用警告。

所以换句话说,效果是#pragma GCC system_header适用于整个翻译单元(我不想要那个)还是只适用于文本编辑器中的单个头文件?

4

1 回答 1

2

这只是对主要规则的重申:

还有一个指令,#pragma GCC system_header,它告诉 GCC将当前包含文件的其余部分视为系统头

而已。不是其他标题,不是您编写的文件#include

就是那个文件。

于 2020-12-18T23:26:42.250 回答