【问题标题】:Why does this Linux kernel page table code wrap a return value in braces?为什么这个 Linux 内核页表代码将返回值包含在大括号中?
【发布时间】:2013-04-30 00:57:18
【问题描述】:

在下面的代码中,你能解释一下return语句中(pgd_t)后面的大括号,即{ val };。这个代码是val吗?使用表达式 { val }; 的 return 语句在做什么?

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

【问题讨论】:

标签: linux kernel


【解决方案1】:

如果你在函数前面看,你会看到:

typedef struct { pgdval_t pgd; } pgd_t;

所以代码实际上等同于:

pgd_t temp = { val };
return temp;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2011-08-17
    • 2017-09-01
    • 1970-01-01
    • 2012-07-29
    • 2022-01-20
    • 2020-10-12
    相关资源
    最近更新 更多