初学者请问“存储管理”中一个宏定义
#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作强制转换, 因为()和.是同一优先级别的,而结合性是从左到右的,所以()是先结合起来的.