首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

不懂(volatile unsigned int _force *)定义的意义

2013-09-08 
不懂(volatile unsigned int __force*)定义的意思?#define __raw_writel(v,a) (__chk_io_ptr(a), *(volati

不懂(volatile unsigned int __force *)定义的意思?
#define __raw_writel(v,a) (__chk_io_ptr(a), *(volatile unsigned int __force   *)(a) = (v))
问题1
(volatile unsigned int __force   *)(a)对(a)强制转换成unsigned int,但是那个__force是什么?

问题2
(__chk_io_ptr(a), *(volatile unsigned int __force   *)(a) = (v))
这是一句么?如果chk_io_ptr(a)返回值为0,后边的赋值语句还会执行么?


[解决办法]
__和_都是命名的问题,这个你可以不用在意,如果要细分的话,应该是__用在开头和结尾,_是放在单词中间取代空格的

__force的话,应该是# define __force  __attribute__((force))这个宏,是添加force属性的,意思是说所定义的变量类型是可以做强制类型转换的,在进行Sparse分析的时候,是不用报告警告信息的。你可以看看这里,或者是这里

至于第二个问题,这句话是一句逗号表达式,所以即使返回为0也会继续执行下去。宏只是一种简单的预替换技术,你把内容带入到程序里自己读一读就知道了。如果是&&或者
[解决办法]
的话就要根据具体的情况判断是否继续执行了。

热点排行