Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140780
  • 博文数量: 12
  • 博客积分: 2092
  • 博客等级: 大尉
  • 技术积分: 285
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-27 11:47
文章分类

全部博文(12)

文章存档

2011年(1)

2009年(11)

我的朋友

分类: C/C++

2009-04-23 11:44:01

C语言真是博大精深,研究的越深入,越是发现很多不了解的地方。最近读Linux内核代码时,发现了一种以前未用过的声明方法,写了个程序测试了一下,如下:

#include

enum num_t
{
    NUMBER_1,
    NUMBER_2,
    NUMBER_COUNT
};

struct test_t
{
    int a, b;
} tt[NUMBER_COUNT][2] = {
        [NUMBER_1]  ={                                      //line A
                {
                    .a = 1,
                    .b = 2,
                },
                {
                    .a = 3,
                    .b = 4,
                }
            },
        [NUMBER_2] = {                                      //line B
                {
                    .a = 5,
                    .b = 6,
                },
                {
                    .a = 7,
                    .b = 8,
                }
            },
    };

int
main()
{
    printf ("%d,%d,%d,%d,%d,%d,%d,%d\n", tt[0][0].a, tt[0][0].b,
      tt[0][1].a, tt[0][1].b, tt[1][0].a, tt[1][0].b, tt[1][1].a, tt[1][1].b);

    return 0;
}

#sh ./a.out
1,2,3,4,5,6,7,8


对于line A和line B是怎么解释的呢?不太明白。
阅读(948) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~