我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 语言标准 >

各种C语言标准与区别

归档日期:08-07       文本归类:语言标准      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  GNU C 允许定义长度为0的数组,可能很多人会问长度为0的数组有什么用啊。其实我们可以定义一个长度为0的数组,那么这个数组是不占用内存空间的,但是 我们可以通过这个数组来访问数组后面的数据,比如一个结构体:

  就可以通过调用data.num[0]获得year数据,data.num[1]来获得month的数据。如果他们的类型相同,并且取值范围相同,我们要对他们进行范围检查,这是我们就可以通过for循环来实现,而不需要获取每个数据的值,再进行取值范围判断了。

  GNU C 支持case x…y 语法,区间[x,y]的数都会满足这个case的条件,我们在不考虑if判断的情况下,如整数a的取值范围为0-5,当03时执行fun1函数,大于等于3时执行fun2();则GNU C可以通过以下代码实现:

  GNU C把包含在括号里的复合语句看做是一个表达式,称为语句表达式,它可以出现在任何允许表达式的地方。可以在语句表达式中使用原本只能在复合语句中使用的循环变量、局部变量等,例如:

  这样,因为重新定义了__x和__y这两个局部变量,所以上述方法定义的宏将不会有副作用。在标准C中,对应的宏通常会有副作用

  typeof(x) 可以获得x的类型,因此,可以借助typeof重新定义上一条提到的min_t这个宏

  不需要像上一条时那样传一个type进去,因为通过typeof(x)可以得到type。

  这里arg表示其余的参数可以是零个或多个,这些参数以及参数之间的逗号构成arg的值,

  使用##的原因是为了处理arg不代表任何参数的情况,这时候,前面的逗号就变得多余了。

本文链接:http://beforelasik.com/yuyanbiaozhun/756.html