注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

随机过程

http://superware.blog.163.com

 
 
 

日志

 
 

GCC扩展:数组初始化  

2015-08-03 19:06:10|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include <stdio.h>


#define LEN 10


int array[LEN] = {

[0 ... 9] = 0,

[3 ... 5] = 3,

[6 ... 8] = 2,

[9] = 5

};


int main ()

{

int i;

for (i = 0; i < LEN; ++i)

printf ("a[%d] = %d\n", i, a[i]);

return 0;

}


Gcc 或 Clang 编译后运行结果:

a[0] = 0

a[1] = 0

a[2] = 0

a[3] = 3

a[4] = 3

a[5] = 3

a[6] = 2

a[7] = 2

a[8] = 2

a[9] = 5

另外 clang 也可以用上述扩展,但 gcc 更进一步,也就是 gcc 在赋值时可以省略等号:

#include <stdio.h>


#define LEN 10


int array[LEN] = {

[0 ... 9] 0, // 赋值时可以略去“=”号。

[3 ... 5] 3,

[6 ... 8] 2,

[9] 5

};


int main ()

{

int i;

for (i = 0; i < LEN; ++i)

printf ("a[%d] = %d\n", i, a[i]);

return 0;

}

用 gcc 编译运行结果与上述同,但 clang 却不能编译.
  评论这张
 
阅读(84)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017