Tim*_*Tim 20
我用Google搜索并得到了这个:
#pragma GCC system_header
Run Code Online (Sandbox Code Playgroud)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会在系统头文件中给出代码特殊处理.除了#warning(第5章诊断)生成的警告之外的所有警告都会在GCC处理系统标头时被抑制.系统标题中定义的宏在任何扩展的位置都不受几个警告的影响.当我们发现警告由于系统头中定义的宏中的代码而产生大量误报时,会临时授予此免疫权.
通常,只有特定目录中的标头才被视为系统标头.这些目录是在编译GCC时确定的.但是,有两种方法可以将普通标头放入系统标头中.
-isystem命令行选项将其参数添加到目录列表以搜索标头,就像-I一样.在该目录中找到的任何标头都将被视为系统标头.
在-I命名的所有目录之后搜索-isystem命名的所有目录,无论它们在命令行上的顺序如何.如果同一目录由-I和-isystem命名,则忽略-I选项.如果使用-v,GCC会在发生这种情况时提供信息性消息.
还有一个指令#pragma GCC system_header,它告诉GCC将当前包含文件的其余部分视为系统头,无论它在哪里找到.文件中#pragma之前的代码不会受到影响.#pragma GCC system_header对主源文件没有影响.
在非常古老的系统上,一些预定义的系统头目录得到了更加特殊的处理.GNU C++认为在这些目录中找到的标题中的代码被extern"C"块包围.无法使用a
#pragma
或命令行请求此行为 .