主题 : 关于defiine的几条命令区别 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 6046
精华: 0
发帖: 6
金钱: 60 两
威望: 60 点
综合积分: 12 分
注册时间: 2009-05-17
最后登录: 2009-08-15
楼主  发表于: 2009-07-03 18:20

 关于defiine的几条命令区别

1.  #define WTCON                 (*(volatile unsigned long *)0x53000000)      
2. #define WTCON            0x53000000
3. #define access              (3<<10)

           看见书上定义寄存器(SFR)的时候大多数用第1种写法,想问第1种跟第2种有什么不同啊?
           我想第2种 可能是用WTCON 代替0x53000000这个表达式,但是WTCON不代表这个地址上的寄存器,第一种就可以,不知道对不对
           那么第2条能不能加括号,第2和第3有什么区别?
           另外 volatile是什么意思,为什么定义类型时要加。。

4.   unsigned int *p=(unsinged int *)2048  
          注释说将steppingstone中的代码复制到SDRAM中,那么为什么不能直接赋值2048?必须前面加类型转换?
[ 此帖被lemonantonio在2009-07-03 18:33重新编辑 ]
求真知!去浮躁!
级别: 侠客
UID: 6514
精华: 0
发帖: 86
金钱: 770 两
威望: 642 点
综合积分: 172 分
注册时间: 2009-06-04
最后登录: 2019-08-08
1楼  发表于: 2009-07-04 00:03
volatile一般用于寄存器的定义,防止编译器进行优化!
级别: 新手上路
UID: 6046
精华: 0
发帖: 6
金钱: 60 两
威望: 60 点
综合积分: 12 分
注册时间: 2009-05-17
最后登录: 2009-08-15
2楼  发表于: 2009-07-05 00:39

 回 1楼(xmh800813) 的帖子

谢了