Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以前从未见过在Linux内核源代码中找到的初始化结构数组的C方法_C_Linux_Arrays_Struct - Fatal编程技术网

以前从未见过在Linux内核源代码中找到的初始化结构数组的C方法

以前从未见过在Linux内核源代码中找到的初始化结构数组的C方法,c,linux,arrays,struct,C,Linux,Arrays,Struct,上面的代码片段显示了我在Linux内核源代码中找到的结构数组的初始化。我以前从未见过这种形式的初始化,我无法自己模拟同样的事情。我到底错过了什么 这是通过使用来完成的 它是一个gcc扩展,不是标准的c构造。使用它会产生不可移植的代码,因此避免使用此类编译器扩展,除非可移植性是您最不关心的问题。它是一种称为指定初始值设定项的GNU/GCC扩展。您可以在中找到有关它的更多信息 要将一系列元素初始化为相同的值,请写入[first…last]=value。这是一个GNU扩展 为什么是C++标签?Linu

上面的代码片段显示了我在Linux内核源代码中找到的结构数组的初始化。我以前从未见过这种形式的初始化,我无法自己模拟同样的事情。我到底错过了什么


这是通过使用来完成的


它是一个gcc扩展,不是标准的c构造。使用它会产生不可移植的代码,因此避免使用此类编译器扩展,除非可移植性是您最不关心的问题。

它是一种称为指定初始值设定项的GNU/GCC扩展。您可以在中找到有关它的更多信息

要将一系列元素初始化为相同的值,请写入
[first…last]=value
。这是一个GNU扩展


为什么是C++标签?Linux内核不使用C++。应该是一个扩展特性。Linux内核使用大量的GCC特定扩展。请参阅,例如,仅为了准确起见,指定的初始值设定项不是GCC扩展(),但范围语法是。
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 } };