这个问题在这里已经有了答案:
What is a designated initializer in C?
(2 个回答)
2年前关闭。
我最近正在学习操作系统类(class),我们在那里学习 xv6。在练习实验室中,我遇到了如下代码:
// xv6_public/syscall.c
#include "defs.h"
#include "syscalls.h"
...
extern int sys_fork(void);
...
static int (*syscalls[])(void) = {
[SYS_fork] sys_fork,
...
};
起初我根本不认识上面使用的语法。网上搜了一下,发现这个语法叫做 Lambda 函数 ,但我仍有疑问:
.c
,可能编译器是g++)最佳答案
这不是 C++ lambda,而是标准 C99 array initialization使用指定的初始化程序。
方括号内的值(例如 [SYS_fork]
)是编译时整数常量,并指定数组中用于初始化的索引。
关于c++ - C - 指定初始化程序 (xv6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60882252/