首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于在指定地址存放、定义变量的问题。

关于在指定地址存放、定义变量的问题。

在头文件(mc9s12dp256.h)里看到有如下定义:


extern volatile PUCRSTR _PUCR @(REG_BASE + 0x0000000C);


觉得不理解,要么写成 extern volatile  _PUCR @(REG_BASE + 0x0000000C);


要么写成            extern volatile PUCRSTR @(REG_BASE + 0x0000000C);  


怎么能一次定义2个变量?!

另外:邵贝贝老师的书里还讲可以这样,如:

#define DDRB  (*((volatile unsigned char *)(0x0001)))

DDRB=0xff;

但实际这样使用时编译不能通过!

请高手指点一下。 

[此贴子已经被作者于2006-8-10 15:21:43编辑过]

              非学无以广才,非志无以成学;              
PUCRSTR是一个结构名,_PUCR是一个结构变量,这句话是定义一个置于固定地址的结构。
海纳百川  有容乃大
你这句编译不能通过是因为它在mc9s12dp256.h文件里已经定义过了!
海纳百川  有容乃大
多谢,邵老师书上讲的这个办法是不是有问题?
              非学无以广才,非志无以成学;              
没问题!
海纳百川  有容乃大

多谢,我发现还有个原因,即使用#define 定义没被使用过的符号,也不能在函数外使用,只能在函数内使用。如可以在函数内这样赋值:DDRB=0xff;但如果在函数外这样使用就会报错,愿和大家分享这点小窍门。

[此贴子已经被作者于2006-8-10 16:38:59编辑过]

              非学无以广才,非志无以成学;              
如果把#define放在头文件中,那么引用这个头文件的文件中的函数都可以使用。也可以用extern来申明。
海纳百川  有容乃大
返回列表