与标准C相比,GNU C的特点

1. 零长度数组 2. case 语法 3.GNU  C  把包含在括号中的复合语句看做是一个表达式,称为语句表达式,它可以出现在任何允许表达式的地方。 4.  typeof 关键字 typeof(x)语句可以获得 x 的类型 5.可变参数的宏 标准 C 只支持可变参数的函数,意味着函数的参数是不固定的。 6.标号元素 准 C 要求数组或结构体的初始化值必须以固定的顺序出现,在  GNU C  中,通指定索引或结构体成员名,允许初始化值以任意顺序出现。 7.当前函数名 GNU C  预定义了两个标志符保存当前函数的名字,_ _FUNCTION_ _保存函数在源码中的名字,_ _PRETTY_FUNCTION_ _保存带语言特色的名字。 8.特殊属性声明 GNU C 允许声明函数、变量和类型的特殊属性,以便进行手工的代码优化和定制代码检查的方法。指定一个声明的属性,只需要在声明后添加__attribute__ (( ATTRIBUTE ))。其中  ATTRIBUTE 为属性说明,如果存在多个属性,则以逗号分隔。GNU C  支持 noreturn、format、section、aligned、packed 等十多个属性。 9.内建函数 GNU C 提供了大量的内建函数,其中大部分是标准 C 库函数的 GNU C 编译器内建版本,例如 memcpy()等,它们与对应的标准 C 库函数功能相同。 10 .do { } while(0) 在 Linux 内核中,经常会看到 do{}while(0)这样的语句,许多人开始都会疑惑,认为 do{}while(0)毫无意义,因为它只会执行一次,加不加 do{}while(0)效果是完全一样的,其实 do{}while(0)主要用于宏定义中。

转载于:https://my.oschina.net/itfanr/blog/358402

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值