【发布时间】:2010-12-01 11:24:37
【问题描述】:
这个 C++ 指令的作用是:“#pragma GCC system_header”?
【问题讨论】:
-
编辑们,能否修改一下标题以更好地反映问题?谢谢。
这个 C++ 指令的作用是:“#pragma GCC system_header”?
【问题讨论】:
我用谷歌搜索得到this:
#pragma GCC system_headerThis 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。因此,GCC 给出在系统头文件中找到的代码 特殊待遇。所有警告,其他 比#warning 生成的那些 (第 5 章诊断),是 在 GCC 处理 a 时被抑制 系统头。在 a 中定义的宏 系统标头不受少数 警告在任何地方展开。 这种豁免权是临时授予的 基础,当我们发现一个警告 产生大量误报 因为定义在宏中的代码 系统头文件。
通常,只有在 考虑特定目录 系统头文件。这些目录是 在编译 GCC 时确定。那里 然而,有两种方法可以使正常 标头转换为系统标头。
-isystem 命令行选项添加 它的参数列表 搜索标题的目录, 就像-I一样。在 该目录将被考虑 系统头文件。
所有由 -isystem 命名的目录都是 搜索所有名为的目录 by -I,无论他们的订单是什么 在命令行上。如果一样 目录由 -I 和 -isystem,忽略 -I 选项。 GCC 提供信息丰富的消息 如果使用 -v 会发生这种情况。
还有一个指令,#pragma GCC system_header,它告诉 GCC 考虑当前的其余部分 包含文件系统头文件,否 不管它是在哪里被发现的。代码 位于文件中的#pragma 之前 不会受到影响。 #pragma GCC system_header 在 主要源文件。
在非常旧的系统上,一些 预定义的系统头目录 得到更特殊的待遇。 GNU C++ 考虑头文件中的代码 那些被包围的目录 外部“C”块。没有办法 请求这种行为
#pragma,或从命令行。
【讨论】:
它表示超过此点的所有内容都被视为位于系统标头中。这意味着除了#warning 之外的所有警告都被禁止
【讨论】: