当前位置: 技术问答>linux和unix
初学者请问“存储管理”中一个宏定义
来源: 互联网 发布时间:2016-01-25
本文导语: #define swp_entry_to_pte(x) ((pte_t){(x).val}) 请问这里的{} 是什么作用? | #define swp_entry_to_pte(x) ((pte_t){(x).val}) 首先:(x) ,()是必需的,否则,如果x为指针 *p.val 和(*p).val 显然是不一样的. 其次{(x).val}...
#define swp_entry_to_pte(x) ((pte_t){(x).val})
请问这里的{} 是什么作用?
请问这里的{} 是什么作用?
|
#define swp_entry_to_pte(x) ((pte_t){(x).val})
首先:(x) ,()是必需的,否则,如果x为指针 *p.val 和(*p).val 显然是不一样的.
其次{(x).val} ,{}是必需的,否则 (pte_t)(x).val 就对(x)作了强制转换,而不是我们想要的对(x).val作强制转换, 因为()和.是同一优先级别的,而结合性是从左到右的,所以()是先结合起来的.
首先:(x) ,()是必需的,否则,如果x为指针 *p.val 和(*p).val 显然是不一样的.
其次{(x).val} ,{}是必需的,否则 (pte_t)(x).val 就对(x)作了强制转换,而不是我们想要的对(x).val作强制转换, 因为()和.是同一优先级别的,而结合性是从左到右的,所以()是先结合起来的.