55 typedef struct pidmap {
56 atomic_t nr_free;
57 void *page;
58 } pidmap_t;
59
60 static pidmap_t pidmap_array[PIDMAP_ENTRIES] =
61 { [ 0 ... PIDMAP_ENTRIES-1 ] = { ATOMIC_INIT(BITS_PER_PAGE), NULL } };
上面的代码片段显示了我在Linux内核源代码中找到的结构数组的初始化。我之前从未见过这种形式的初始化,我无法自己模拟同样的事情。实际上我错过了什么?
答案 0 :(得分:6)
这是一个名为指定初始化程序的GNU / GCC扩展。您可以在GCC documentation。
中找到有关它的更多信息要将一系列元素初始化为相同的值,请写入
[first ... last] = value
。这是一个GNU扩展
答案 1 :(得分:5)
使用 Designated Initializer 完成。
它是gcc扩展而不是标准c构造。使用它会产生不可移植的代码,因此请避免使用此类编译器扩展,除非可移植性是您最不关心的问题。