C ++编译指示GCC system_header指令

时间:2009-09-25 15:46:17

标签: c++ gcc pragma

这个C ++指令的作用是什么:“#pragma GCC system_header”?

2 个答案:

答案 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.

More info on 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之外的所有警告都被禁止