我们可能知道c99中的designated initializers以及它们用于初始化大型const数组的方式:
const int vals[] = {
[0] = 10,
[10] = 12
}
将0
至[{1}}的索引vals
和10
的{{1}}索引至10
。
我的问题是如何将这种类型的指定初始化器用于数组数组。这是我的示例代码:
vals
但是我得到了这些警告,暗示初始化仅使用第一个元素。
12
答案 0 :(得分:7)
支持的值列表无法初始化指针。您的错误与以下内容相同:
int *p = { 1, 2, 3 };
您可以使用复合文字:
// ...
[COMMON] = (const int[]){STRINGS, KEY, PRECUSSIVE, _INST_MAX},
这假设代码在文件范围内(即在任何函数之外),这意味着复合文字具有静态存储持续时间,因此可以安全地指向它们。如果您的代码实际上在函数内部,则需要声明单独的静态数组或进行其他修改。