2楼的,谢谢啦,我懂啦,原来是对extern理解不透彻啊。<br /><br />我在用CCS2.2编译的时候发现一个问题:<br />同一个结构体DevEmuRegs分别.h和.c两个文件中都定义了,编译的时候竟然没有提示错误!<br />并且屏蔽其中任一个编译都会失败,提示未定义!为什么?<br />两种显示未定义的提示不同,分别如下:<br /><br />=======DSP28_DevEmu.h文件中=========<br />在DSP28_DevEmu.h中用这句extern volatile struct DEV_EMU_REGS DevEmuRegs;定义的。屏蔽掉这个语句之后对工程编译,错误提示如下:<br /><br />"DSP28_SysCtrl.c", line 36: error: identifier "DevEmuRegs" is undefined<br />1 error detected in the compilation of "DSP28_SysCtrl.c".<br /><br />"C:\ti\c2000\cgtools\bin\cl2000" -g -q -fr"c:/ti/myprojects/PIE/Debug" -d"_DEBUG" -d"LARGE_MODEL" -ml -v28 -@"Debug.lkf" "pie.c"<br /><br />Build Complete,<br /> 1 Errors, 0 Warnings, 0 Remarks.<br /><br />=======DSP28_GlobalVariableDefs.c文件中=========<br />在DSP28_GlobalVariableDefs.c中是用这个语句volatile struct DEV_EMU_REGS DevEmuRegs;定义的。屏蔽掉这个语句后对工程编译错误提示如下:<br /><br />undefined first referenced<br /> symbol in file<br />--------- ----------------<br />_DevEmuRegs c:\ti\myprojects\PIE\Debug\DSP28_SysCtrl.obj<br />>> error: symbol referencing errors - './Debug/PIE.out' not built<br /><br />Build Complete,<br /> 1 Errors, 0 Warnings, 0 Remarks.<br /><br />=========================<br />我的问题是:<br />1.为什么重复定义不提示错误?<br />2.为什么去掉哪个都不行?<br />请高手不吝赐教!谢谢!两个问题都要回答哦 |
|