gpt4 book ai didi

c++ - C - 指定初始化程序 (xv6)

转载 作者:行者123 更新时间:2023-12-02 10:04:43 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





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++ 一起使用 Lambda。它能够在 C 中使用 Lambda 吗?语法和C++一样吗? (源文件都是.c,可能编译器是g++)
  • 有人能简单解释一下上面的代码吗?我可以理解它是函数指针数组,其中每个元素都是 lambda 函数。或者请推荐很好的引用阅读。
  • 最佳答案

    这不是 C++ lambda,而是标准 C99 array initialization使用指定的初始化程序。

    方括号内的值(例如 [SYS_fork] )是编译时整数常量,并指定数组中用于初始化的索引。

    关于c++ - C - 指定初始化程序 (xv6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60882252/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com