这个C ++指令的作用是什么:“#pragma GCC system_header”?
答案 0 :(得分:18)
我用Google搜索并得到this:
#pragma GCC system_header
This pragma takes no arguments. It causes the rest of the code in the current file to be treated as if it came from a system header. Section 2.7 System Headers.
2.7。系统标题
头文件声明接口 到操作系统和运行时 库通常不能写入 严格遵守C.因此,海湾合作委员会 给出系统头中的代码 特别待遇。所有警告,其他 而不是#warning生成的那些 (第5章诊断),是 GCC处理时受到抑制 系统标题。宏中定义的宏 系统头不受少数人的影响 警告无论在何处扩展。 这种免疫力是临时授予的 基础,当我们发现一个警告 产生大量误报 因为定义的宏中的代码 系统标题。
通常,只有找到的标题 考虑具体目录 系统标题。这些目录是 在GCC编制时确定。那里 然而,有两种方法可以正常 标题到系统标题。
-isystem命令行选项添加 它的列表中的参数 搜索标题的目录, 就像-I。找到的任何标题 该目录将被考虑 系统标题。
-isystem命名的所有目录都是 搜索所有名为的目录 by -I,无论他们的订单是什么 在命令行上。如果相同 目录由-I和命名 -isystem,忽略-I选项。 GCC提供了丰富的信息 当发生这种情况时,如果使用-v。
还有一个指令,#pragma GCC system_header,告诉GCC 考虑当前的其余部分 包括文件系统头,没有 发现它的地方。代码那个 来自文件中的#pragma 不会受到影响。 #pragma GCC system_header没有效果 主要来源文件。
在很老的系统上,有些是 预定义的系统头目录 得到更特殊的待遇。 GNU C ++考虑了在头文件中找到的代码 那些被包围的目录 一个外部“C”块。没有办法 使用a请求此行为
#pragma
,或来自命令行。
答案 1 :(得分:6)
它表示过去这一切的所有内容都被视为系统标题中的内容。这意味着除了#warning之外的所有警告都被禁止