#pragma GCC system_header用法

在看公司公共库的头文件中发现了:#pragma GCC system_header一行,以前没有见过这种用法,在网上查了一下,解释如下:

从#pragma GCC system_header直到文件结束之间的代码会被编译器视为系统头文件之中的代码。系统头文件中的代码往往不能完全遵循C标准, 所以头文件之中的警告信息往往不显示。(除非用 #warning显式指明)。

可以查看gcc参考手册:http://gcc.gnu.org/onlinedocs/cpp/System-Headers.html#System-Headers

The header files declaring interfaces to the operating system and runtime libraries often cannot be written in strictly conforming C. Therefore, GCC gives code found in system headersspecial treatment. All warnings, other than those generated by ‘#warning’ (see Diagnostics), are suppressed while GCC is processing a system header. Macros defined in a system header are immune to a few warnings wherever they are expanded. This immunity is granted on an ad-hoc basis, when we find that a warning generates lots of false positives because of code in macros defined in system headers.

Normally, only the headers found in specific directories are considered system headers. These directories are determined when GCC is compiled. There are, however, two ways to make normal headers into system headers:

  • Header files found in directories added to the search path with the -isystem and -idirafter command-line options are treated as system headers for the purposes of diagnostics.
  • There is also a directive, #pragma GCC system_header, which tells GCC to consider the rest of the current include file a system header, no matter where it was found. Code that comes before the ‘#pragma’ in the file is not affected. #pragma GCC system_header has no effect in the primary source file.

原文地址:https://www.cnblogs.com/abc-begin/p/8483596.html

时间: 2024-10-09 02:53:36

#pragma GCC system_header用法的相关文章

编译器处理警告、错误 #pragma GCC diagnostic ignored "-Wunused"

各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attribute__ ((unused));指定该变量为"未使用的".即使这个变量没有被使用,编译时也会忽略则个警告输出. 文件级:在源代码文件中诊断(忽略/警告) 语法:#pragma GCC diagnostic [error|warning|ignored] "-W<警告选项>"诊断-忽略:(关闭警告) #pragma  GCC diagnostic ignore

【转】各个层次的gcc警告 #pragma GCC diagnostic ignored &quot;-Wunused-parameter&quot; --不错

原文网址:http://blog.csdn.net/lizzywu/article/details/9419145 各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attribute__ ((unused));指定该变量为"未使用的".即使这个变量没有被使用,编译时也会忽略则个警告输出. 文件级:在源代码文件中诊断(忽略/警告) 语法: #pragma GCC diagnostic [error|warning|ignored] "-W&l

gcc基本用法

GCC基本用法 GCC最基本的用法是: gcc [option] filenames option:编译器所需要的编译选项 filenames:要编译的文件名 gcc编译流程 都以 hello.c 为例预处理: gcc –E hello.c –o hello.i编译: gcc –S hello.i –o hello.S汇编: gcc –C hello.S –o hello.o链接: gcc hello.o –o hello -O 优化 -O2 比-O更好的优化编译.链接.当然整个编译.链接过程会

gcc编译器用法

一个用c语言写的程序把他编译成计算机可指行的文件,一般有4个步骤 /*================================================================ * Copyright (C) 2018 . All rights reserved. * * 文件名称:helloworld.c * 创 建 者:ghostwu(吴华) * 描 述:gcc编译器用法演示 * =============================================

由#pragma GCC diagnostic ignored &quot;-Wdeprecated-declarations&quot; 浅出

首先, #pragma 本质上也是声明,一般常用的功能就是打注释.尤其是分段注释 但是#pragma 另外一个强大的功能就是处理编译器警告. http://www.2cto.com/kf/201412/363139.html http://blog.csdn.net/mamong/article/details/24542107 预处理指令#pragma http://baike.baidu.com/link?url=Yghuu6uZz_1IM-P0cRU_a22MJxg_x1LyNd73MJd

iOS pragma mark的用法

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源码下载:点我传送 简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark Life Cycle - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the

(转)IOS笔记 #pragma mark的用法

简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick{ //... } OK,那么如何查找呢,点击代码编辑器上面的导航栏即可: 接着我修改一下代码: #pragma mark - 播放节拍器 猛一看没发现区别是吧?实际上多了一个横线 #pragma mark “-” 播放节拍器 这个短横线(减号)有什么作用呢,再次点击导航栏就可以看到. 加上-后会显示一条分割线会

GCC编译器原理(三)------编译原理三:编译过程---预处理

Gcc的编译流程分为了四个步骤: 预处理,生成预编译文件(.文件):gcc –E hello.c –o hello.i 编译,生成汇编代码(.s文件):gcc –S hello.i –o hello.s 汇编,生成目标文件(.o文件):gcc –c hello.s –o hello.o 链接,生成可执行文件:gcc hello.o –o hello 一.预处理 预编译程序读出源代码,对其中内嵌的指示字进行响应,产生源代码的修改版本,修改后的版本会被编译程序读入. 在 GNU 术语中,预处理程序叫

C预编译, 预处理, C/C++头文件, 编译控制,

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的. 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数. (1)message 参数. Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输