用于数组数组的指定初始化程序

时间:2017-02-14 20:28:22

标签: c c99

我们可能知道c99中的designated initializers以及它们用于初始化大型const数组的方式:

const int vals[] = {
    [0] = 10,
    [10] = 12
}

0至[{1}}的索引vals10的{​​{1}}索引至10

我的问题是如何将这种类型的指定初始化器用于数组数组。这是我的示例代码:

vals

但是我得到了这些警告,暗示初始化仅使用第一个元素。

12

1 个答案:

答案 0 :(得分:7)

支持的值列表无法初始化指针。您的错误与以下内容相同:

int *p = { 1, 2, 3 };

您可以使用复合文字:

// ...
[COMMON] = (const int[]){STRINGS, KEY, PRECUSSIVE, _INST_MAX},

这假设代码在文件范围内(即在任何函数之外),这意味着复合文字具有静态存储持续时间,因此可以安全地指向它们。如果您的代码实际上在函数内部,则需要声明单独的静态数组或进行其他修改。