Board logo

标题: 关于在指定地址存放、定义变量的问题。 [打印本页]

作者: shpdlizj    时间: 2006-8-10 15:21     标题: 关于在指定地址存放、定义变量的问题。

在头文件(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编辑过]


作者: strongchen    时间: 2006-8-10 15:53

PUCRSTR是一个结构名,_PUCR是一个结构变量,这句话是定义一个置于固定地址的结构。
作者: strongchen    时间: 2006-8-10 15:56

你这句编译不能通过是因为它在mc9s12dp256.h文件里已经定义过了!
作者: shpdlizj    时间: 2006-8-10 16:00

多谢,邵老师书上讲的这个办法是不是有问题?
作者: strongchen    时间: 2006-8-10 16:04

没问题!
作者: shpdlizj    时间: 2006-8-10 16:38

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

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


作者: strongchen    时间: 2006-8-10 17:42

如果把#define放在头文件中,那么引用这个头文件的文件中的函数都可以使用。也可以用extern来申明。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0