header 文件中的 `#pragma GCC system_header` 是否扩展到另一个源或包含它的 header 文件?
Does `#pragma GCC system_header` in a header file extend into another source or header file that includes it?
我需要禁用某个 header 文件中的所有警告,并且仅禁用该文件。
我的编译器版本是g++-4.8
。我必须使用那个编译器。
我查阅了那个编译器的文档:
g++-4.8 documentation support for System-Headers
写着:
All warnings, other than those generated by #warning
, are suppressed while GCC is processing a system header. Macros defined in a system header are immune to a few warnings wherever they are expanded.
There is also a directive, #pragma GCC system_header
, which tells GCC to consider the rest of the current include file a system header, no matter where it was found. Code that comes before the #pragma
in the file will not be affected. #pragma GCC system_header
has no effect in the primary source file.
由于英语是我的第二语言,我不清楚最后一句话的意思。
我想禁用整个 单个 header 文件中的所有警告。这个 header 文件包含在许多不同的 C++ 源代码文件 *.cpp
中。此 header 文件也包含在其他几个 header 文件 *.h
中,那些 header 文件也包含在其他文件中。
我想知道,如果我将 #pragma GCC system_header
放在 单个 header 文件中,那个 #pragma
指令的效果会怎样被转移到任何包含 header 的文件中?因为我不想禁用包含此 header 文件的文件中的任何警告。我只想禁用结构 的警告,这些结构仅在 header 文件 .
中定义
换句话说,#pragma GCC system_header
的效果是适用于整个翻译单元(我不想要那个)还是仅适用于单个 header 文件,就像在文本编辑器中一样?
只是对主要规则的重申:
There is also a directive, #pragma GCC system_header, which tells GCC to consider the rest of the current include file a system header
就是这样。不是其他headers,不是你写的那个文件#include
.
就是那个文件。
我需要禁用某个 header 文件中的所有警告,并且仅禁用该文件。
我的编译器版本是g++-4.8
。我必须使用那个编译器。
我查阅了那个编译器的文档: g++-4.8 documentation support for System-Headers
写着:
All warnings, other than those generated by
#warning
, are suppressed while GCC is processing a system header. Macros defined in a system header are immune to a few warnings wherever they are expanded.
There is also a directive,
#pragma GCC system_header
, which tells GCC to consider the rest of the current include file a system header, no matter where it was found. Code that comes before the#pragma
in the file will not be affected.#pragma GCC system_header
has no effect in the primary source file.
由于英语是我的第二语言,我不清楚最后一句话的意思。
我想禁用整个 单个 header 文件中的所有警告。这个 header 文件包含在许多不同的 C++ 源代码文件 *.cpp
中。此 header 文件也包含在其他几个 header 文件 *.h
中,那些 header 文件也包含在其他文件中。
我想知道,如果我将 #pragma GCC system_header
放在 单个 header 文件中,那个 #pragma
指令的效果会怎样被转移到任何包含 header 的文件中?因为我不想禁用包含此 header 文件的文件中的任何警告。我只想禁用结构 的警告,这些结构仅在 header 文件 .
换句话说,#pragma GCC system_header
的效果是适用于整个翻译单元(我不想要那个)还是仅适用于单个 header 文件,就像在文本编辑器中一样?
只是对主要规则的重申:
There is also a directive, #pragma GCC system_header, which tells GCC to consider the rest of the current include file a system header
就是这样。不是其他headers,不是你写的那个文件#include
.
就是那个文件。