我需要禁用某个头文件中的所有警告,并且只禁用该文件。我的编译器版本是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
适用于整个翻译单元(我不想要那个)还是只适用于文本编辑器中的单个头文件?