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