今天编程序时碰到一个奇怪的现象,编译时可以通过,但链接时出现一百多个错误,都是说某个寄存器出现重复定义,如:“>> symbol _EVBIMRC mltiply defined: D:CrubyDSP2000200707serial02Debugmain.obj and D:CrubyDSP2000200707serial02Debugserial.obj”<br /><br />可是我觉得奇怪,我头文件可都是做了预包含的处理啊,如:<br />#ifndef ...<br />#define ...<br />....<br />#endif<br />这样按理说不应该出现这种错误才对啊,为什么会有这种现象呢?<br />CCS怎么才能编译有多个C源文件的工程呢?<br /><br />下面是我工程的主要文件:<br />/****** 主文件 main.c *****/<br />#include "common.h"<br />#include "serial.h"<br />int main()<br />{<br />.......<br />return 0;<br />}<br />/***** End *******/<br /><br />/***** 串口通信函数的实现 serial.c *******/<br />#include "serial.h"<br />#include "common.h"<br /><br />void A()<br />{}<br />void B()<br />{}<br />......<br />/********** End *************************/<br /><br />/******** serial.h ********************/<br />#ifndef SERIAL_H<br />#define SERIAL_H<br /><br />#include "common.h"<br /><br />void A();<br />void B();<br />......<br /><br />#endif<br />/********* End ******************************/<br /><br />/********* common.h ********************/<br />#ifndef COMMON_H<br />#define COMMON_H<br /><br />#include "DSP2407A.h" //寄存器<br /><br />typedef unsigned int uint;<br />typedef unsigned char uchar;<br /><br />#endif<br />/********* End ***********************/<br /><br />/********* DSP2407A.h **********/<br />#ifndef DSP2407A_H<br />#define DSP2407A_H<br /><br />volatile unsigned int *IMR=(volatile unsigned int *)0x0004;<br />volatile unsigned int *GREG=(volatile unsigned int *)0x0005;<br />................<br />#endif<br />/******** End ********************************/<br /><br />其中main.c和serial.c我是添加到工程项目中的source文件夹下的 |
|