这在c中意味着什么?花括号内的方括号

时间:2018-01-19 01:05:51

标签: c

const int status[STATUS_SIZE] = {
        [0] = -1, 
        [1] = 0,
        [2] = 1,
};

const char *messages[MESSAGE_SIZE] = {
        [0] = "OK",
        [1] = "NG",
};

你能解释一下吗?

1 个答案:

答案 0 :(得分:4)

C99引入Designated Initializers,您可以使用它来初始化数组 以任何顺序使用索引。

  

6.27 Designated Initializers

     

标准C90要求初始化程序的元素以固定顺序出现,与正在初始化的数组或结构中的元素顺序相同。

     

在ISO C99中,您可以按任何顺序给出元素,指定它们适用的数组索引或结构字段名称,GNU C也允许它作为C90模式的扩展。此扩展未在GNU C ++中实现。

     

要指定数组索引,请在元素值之前写入[index] =。例如,

int a[6] = { [4] = 29, [2] = 15 };
     

相当于

int a[6] = { 0, 0, 15, 0, 29, 0 };