【发布时间】: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 };
}
【问题讨论】:
在下面的代码中,你能解释一下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;
大括号是初始化结构的语法的一部分。强制转换语法允许您将结构创建为表达式的一部分,而不是在初始化变量时。
【讨论】: