为什么这个Linux内核页表代码在大括号中包含返回值?

时间:2013-04-30 00:57:18

标签: linux kernel

在下面的代码中,您能否解释(pgd_t)语句中return { val };之后的大括号val。这段代码是{ val };吗?使用表达式static inline pgd_t native_make_pgd(pgdval_t val) { return (pgd_t) { val }; } 的返回语句是什么?

{{1}}

1 个答案:

答案 0 :(得分:1)

如果你在功能面前看,你会看到:

typedef struct { pgdval_t pgd; } pgd_t;

所以代码实际上等同于:

pgd_t temp = { val };
return temp;

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