C ++编译GCC system_header指令(C++ pragma GCC system_he

2019-07-19 15:44发布

这是什么C ++指令做 “的#pragma GCC system_header”?

Answer 1:

我用Google搜索,并得到这个 :

#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.因此,GCC给出了系统中发现的代码接头特殊待遇。 而GCC正在处理一个系统标题的所有警告,比#warning后(第5章Diagnostics)上产生的那些其他,被抑制。 在系统头文件中定义的宏是免疫的一些警告,无论他们被扩展。 这种豁免权授予一个特设的基础上,当我们发现一个警告产生大量的代码,因为误报在系统头文件中定义的宏。

通常情况下,只有在特定的目录中发现的头部被认为是系统头。 当GCC编译这些目录确定。 有,但是,两种方法可以使正常的标题变为系统头。

该-isystem命令行选项增加了其参数的目录列表中搜索头,就像-I。 在该目录中发现的任何标题将被视为系统头。

所有通过-isystem命名的目录由-I命名,不管它们的顺序是命令行上的所有目录后搜索。 如果相同的目录由双方-I和-isystem命名,-I选项被忽略。 当GCC如果使用-v发生这种情况提供了一种信息的消息。

还有一个指令,GCC的#pragma system_header,它告诉GCC考虑当前的其余部分包括文件系统头,无论在哪里发现。 自带的文件中使用#pragma不会影响之前的代码。 的#pragma GCC system_header具有主源文件中没有任何影响。

很老的系统中,一些预先定义的系统头文件目录中得到更多的特殊待遇。 GNU C ++认为在这些目录中发现标题代码由一个外部的“C”块所包围。 没有办法以请求此行为#pragma ,或从命令行。



Answer 2:

它说,就好像它是在一个系统头一切都会过去这点处理。 这意味着,比#warning后其他所有警告被抑制



文章来源: C++ pragma GCC system_header directive
标签: c++ gcc pragma