我是靠谱客的博主 贪玩钢笔,最近开发中收集的这篇文章主要介绍(*(volatile unsigned long *),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 #define VIC_BASE_ADDR 0xFFFFF000
#define VICIRQStatus   (*(volatile unsigned long *)(VIC_BASE_ADDR + 0x000))

直接修饰代表一个地址VIC_BASE_ADDR + 0x000,而用指针修饰则代表VIC_BASE_ADDR + 0x000地址处的值

 

volatile   类型却是是这样的,   其数据确实可能在未知的情况下发生变化  
   
  比如,硬件设备的终端更改了它  
   
  现在硬件设备往往也有自己的私有内存地址,比如显存  
  他们一般是通过映象的方式,反映到一段特定的内存地址当中  
  这样,在某些条件下,程序就可以直接访问这些私有内存了  
   
  另外,比如共享的内存地址,   多个程序都对它操作的时候  
  你的程序并不知道,这个内存何时被改变了  
   
  如果不加这个voliatile修饰,程序是利用catch当中的数据,那个可能是过时的了  
  加了,就在需要用的时候,程序重新去那个地址去提取,保证是最新的

 

最后

以上就是贪玩钢笔为你收集整理的(*(volatile unsigned long *)的全部内容,希望文章能够帮你解决(*(volatile unsigned long *)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部