这是什么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后其他所有警告被抑制