#define((volatile unsigned *) ) 讲解

来源:本站
导读:目前正在解读《#define((volatile unsigned *) ) 讲解》的相关信息,《#define((volatile unsigned *) ) 讲解》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《#define((volatile unsigned *) ) 讲解》的详细说明。
简介:本文介绍了是用C语言的一个关于volatile的问题。

对于(volatileunsignedchar*)0x20我们再分析一下,它是由两部分组成:

1)(unsignedchar*)0x20,0x20只是个值,前面加(unsignedchar*)表示0x20是个地址,而且这个地址类型是unsignedchar,意思是说读写这个地址时,要写进unsignedchar的值,读出也是unsignedchar。

2)volatile,关键字volatile确保本条指令不会因C编译器的优化而被省略,且要求每次直接读值。例如用while((unsignedchar*)0x20)时,有时系统可能不真正去读0x20的值,而是用第一次读出的值,如果这样,那这个循环可能是个死循环。用了volatile则要求每次都去读0x20的实际值。

那么(volatileunsignedchar*)0x20是一个固定的指针,是不可变的,不是变量。而char*u则是个指针变量。

再在前面加"*": *(volatileunsignedchar*)0x20则变成了变量(普通的unsignedchar变量,不是指针变量),如果#definei(*(volatileunsignedchar*)0x20),那么与unsignedchari是一样了,只不过前面的i的地址是固定的。

那么,(*(volatileunsignedchar*)0x20)可看作是一个普通变量,这个变量有固定的地址,指向0x20。而0x20只是个常量,不是指针更不是变量。

提醒:《#define((volatile unsigned *) ) 讲解》最后刷新时间 2024-03-14 01:01:02,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《#define((volatile unsigned *) ) 讲解》该内容的真实性请自行鉴别。