linux - 为什么这个 Linux 内核页表代码将返回值用大括号括起来?

标签 linux kernel

在下面的代码中,请您解释一下 return 语句中 (pgd_t) 后面的大括号,即 { val }; .这段代码是在转换 val 吗?使用表达式 { val }; 的 return 语句做了什么?

static inline pgd_t native_make_pgd(pgdval_t val)
    {
            return (pgd_t) { val };
    }

最佳答案

如果您在函数的正前方看,您会看到:

typedef struct { pgdval_t pgd; } pgd_t;

所以代码实际上等同于:

pgd_t temp = { val };
return temp;

大括号是初始化结构的语法的一部分。强制转换语法允许您将结构创建为表达式的一部分,而不是在初始化变量时。

关于linux - 为什么这个 Linux 内核页表代码将返回值用大括号括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290579/

相关文章:

c - 这段代码会导致内核级内存泄漏,这和用户态内存泄漏有什么区别

c++ - 从 shell 命令读取值 Linux

linux - 关于 Linux 内核中 IPv6 实现的 Material

arm - ARM 中 TPIDR_EL0/TPIDR_EL1 等线程 ID 寄存器的用途是什么?

linux - 释放函数在另一个进程上下文中被调用

linux - 将 pthread 固定到单个核心

linux - 配置 Vagrant 时在 sudo 中设置环境变量

Linux IO 操作符 '>'

linux - 我应该如何设置 Vulkan SDK 环境变量?

c - 在 glibc 源代码中哪里可以找到 select() 源代码?