解释下一什么意思这是,怎么在程序用呢
时间:2010-09-15
来源:互联网
小弟新手,请教教我下定义啥意思,怎么在程序里用到啊
#ifndef __ASSEMBLY__
typedef struct _AT91S_AC97C {
AT91_REG AC97C_CAMR; // Channel A Mode Register
AT91_REG AC97C_CBMR; // Channel B Mode Register
} AT91S_AC97C, *AT91PS_AC97C;
#else
#define AC97C_CAMR (AT91_CAST(AT91_REG *) 0x0000002C) // (AC97C_CAMR) Channel A Mode Register
#define AC97C_CBMR (AT91_CAST(AT91_REG *) 0x0000003C) // (AC97C_CBMR) Channel B Mode Register
#endif
这个模式#ifndef __ASSEMBLY__
.......................
#else
***********
#endif
意思是:如果没有定义集合就执行............否则就执行*******么?
在程序里怎么用呢?小弟新手请哪位大哥教一下
#ifndef __ASSEMBLY__
typedef struct _AT91S_AC97C {
AT91_REG AC97C_CAMR; // Channel A Mode Register
AT91_REG AC97C_CBMR; // Channel B Mode Register
} AT91S_AC97C, *AT91PS_AC97C;
#else
#define AC97C_CAMR (AT91_CAST(AT91_REG *) 0x0000002C) // (AC97C_CAMR) Channel A Mode Register
#define AC97C_CBMR (AT91_CAST(AT91_REG *) 0x0000003C) // (AC97C_CBMR) Channel B Mode Register
#endif
这个模式#ifndef __ASSEMBLY__
.......................
#else
***********
#endif
意思是:如果没有定义集合就执行............否则就执行*******么?
在程序里怎么用呢?小弟新手请哪位大哥教一下
作者: marcomo1986 发布时间: 2010-09-15
哦,我明白了,类似于
#ifndef __ASSEMBLY__
typedef volatile unsigned int AT91_REG;
#define AT91_CAST(a) (a)
#else
#define AT91_CAST(a)
#endif
如果没有定义 __ASSEMBLY__ 宏(即使用C编程),AT91_CAST(a) 就会替换成 a,即原来是什么就是什么,如果定义了 __ASSEMBLY__ 宏,说明使用汇编编程, 这个AT91_CAST(a) 定义为空,所以:
如果用C
#define SDRAMC_MR (AT91_CAST(AT91_REG *) 0x00000000)
会变成
#define SDRAMC_MR (volatile unsigned int *) 0x00000000)
如是用汇编
#define SDRAMC_MR (AT91_CAST(AT91_REG *) 0x00000000)
会变成
#define SDRAMC_MR (0x00000000)
#ifndef __ASSEMBLY__
typedef volatile unsigned int AT91_REG;
#define AT91_CAST(a) (a)
#else
#define AT91_CAST(a)
#endif
如果没有定义 __ASSEMBLY__ 宏(即使用C编程),AT91_CAST(a) 就会替换成 a,即原来是什么就是什么,如果定义了 __ASSEMBLY__ 宏,说明使用汇编编程, 这个AT91_CAST(a) 定义为空,所以:
如果用C
#define SDRAMC_MR (AT91_CAST(AT91_REG *) 0x00000000)
会变成
#define SDRAMC_MR (volatile unsigned int *) 0x00000000)
如是用汇编
#define SDRAMC_MR (AT91_CAST(AT91_REG *) 0x00000000)
会变成
#define SDRAMC_MR (0x00000000)
作者: marcomo1986 发布时间: 2010-09-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28