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) |