小编use*_*510的帖子

为什么ACCESS_ONCE如此复杂?

Linux ACCESS_ONCE宏定义如下:

#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
Run Code Online (Sandbox Code Playgroud)

我明白这是做什么的,但想知道它为何如此复杂?我的理解是它做了以下事情:

  1. 获取关注变量的地址(创建临时指针)
  2. 将此转换为相同类型的易失性指针
  3. 取消引用该指针

任何想法为什么不以更简单的方式实现,说:

 #define ACCESS_ONCE(x) ((volatile typeof(x))(x))
Run Code Online (Sandbox Code Playgroud)

c linux-kernel

8
推荐指数
1
解决办法
1784
查看次数

标签 统计

c ×1

linux-kernel ×1