C语言的这种风格是什么?

从sys.c行123:

void *sys_call_table[__NR_syscalls] = { [0 ... __NR_syscalls-1] = sys_ni_syscall, #include <asm/unistd.h> }; 

sys_call_table是一个通用的数组指针,我可以看到。 但是什么是符号:

 [0 ... __NR_syscalls-1] 

什么是...


编辑:
我在这里学到了另外一个C技巧: #include <asm/unistd.h>将被预处理并replace为其内容,并被分配给[0 ... _NR_syscalls-1]

这是使用指定的初始化程序初始化

基于范围的初始化是gnu gcc扩展。

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

  int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 }; 

这不是便携式的。 用-pedantic编译告诉你。

它在这里如何工作?
预处理器用基于范围的构造中的实际内容( 它定义各种符号常量和types,并声明各种函数 )replace#include <asm/unistd.h> ,然后进一步用于初始化指针数组。