2812的c语言编译问题:两种错误提示都是未定义,有何不同?

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

extern表示别处定义过了

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

35

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部