我在xv6的代码中遇到了一个不熟悉的数组初始化语法。 原始代码在syscall.s
中static int (*syscalls[])(void) = {
[SYS_fork] sys_fork,
[SYS_exit] sys_exit,
[SYS_wait] sys_wait,
// ...
[SYS_halt] sys_halt,
};
我运行了我的示例代码以确认此
const char* mystrings[] = {
[2] "this",
[1] "is",
[0] "cool",
};
int main (int argc, char const* argv[])
{
printf("%s %s %s\n",mystrings[0],mystrings[1],mystrings[2]);
return 0;
}
输出
cool is this
C代码中的这种数组初始化是什么?我在哪里(找到这方面的文件?(我用gcc 4.6.3编译)
答案 0 :(得分:3)
指定初始值设定项,C99的一部分。请参阅示例the GCC documentation。目前的标准参考是C11 6.7.9。
但是,GCC提供了一些此语法的扩展,例如省略=
符号或范围。