搜索
bottom↓
回复: 25

IAR编译时总是提示h文件第一行定义的常量未定义

[复制链接]

出0入0汤圆

发表于 2013-5-29 08:30:09 | 显示全部楼层 |阅读模式
本帖最后由 五木 于 2013-5-29 08:50 编辑

如图所示:
在.h文件中第一行 定义一个无符号字符型数组“head_daye”常量,并赋初值。
在main函数中调用这个数组,提示如图的错误。在main函数调用时,是从. h文件处复制过去的,就不存在敲错代码的问题了!
同时,若将这第一行代码剪切到. h文件的任一非第一行处。再次编译时,则会提示修改后的.h文件第一行定义的常量未定义。

总结一句话就是:编译时,总是提示.h文件的第一行定义的 常量未定义!无论换 定义好的哪个常量 放到第一行 都是同样的问题!

问题就出来了:IAR设置的问题?版本、和谐的问题?(注:以前用过该工程类应用,未出现过此类问题。)

望各位大侠指点迷津!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-5-29 08:41:59 | 显示全部楼层
你需要把头文件和c文件都贴出来才能帮你分析。

出0入0汤圆

发表于 2013-5-29 08:42:44 | 显示全部楼层
应该是你的程序文件有问题,不一定是他报的那个文件

出0入0汤圆

 楼主| 发表于 2013-5-29 08:44:43 | 显示全部楼层
lcofjp 发表于 2013-5-29 08:41
你需要把头文件和c文件都贴出来才能帮你分析。

文件太大了,我试试看。。

出0入0汤圆

 楼主| 发表于 2013-5-29 09:00:47 | 显示全部楼层
yy8047 发表于 2013-5-29 08:42
应该是你的程序文件有问题,不一定是他报的那个文件

跟踪 错误提示 里面的 “{”错误和“;” 都是跟踪到.h的第一行!

如果是文件其他地方缺少 { 或 ;应该在main调用该常量的前后,但没有更多的错误或警告出现啊!非常费解怎么会出现这类问题!

出0入0汤圆

发表于 2013-5-29 09:03:40 | 显示全部楼层
H文件中定義數組時不要初始化,移到C文件中

出0入0汤圆

发表于 2013-5-29 09:08:41 | 显示全部楼层
五木 发表于 2013-5-29 09:00
跟踪 错误提示 里面的 “{”错误和“;” 都是跟踪到.h的第一行!

如果是文件其他地方缺少 { 或 ;应该 ...

这个现象以前见到过,但后来怎么解决的忘了,大概就是哪里定义不对的

出0入0汤圆

 楼主| 发表于 2013-5-29 09:30:34 | 显示全部楼层
NemoGu 发表于 2013-5-29 09:03
H文件中定義數組時不要初始化,移到C文件中

如果是变量肯定得你这样处理,但定义的是常量,定义的时候就得把值赋上。相当于ASSIC数据库一样的道理。

出0入0汤圆

 楼主| 发表于 2013-5-29 09:35:21 | 显示全部楼层
yy8047 发表于 2013-5-29 09:08
这个现象以前见到过,但后来怎么解决的忘了,大概就是哪里定义不对的

我这个.h其实就是个文件库,比如固定的 行 汉字,图片字模等。

相关联的就只有mian文件了,只有这里面调用了它。
现在没想不到哪里漏掉了什么定义之类的。

出0入0汤圆

发表于 2013-5-29 09:44:13 | 显示全部楼层
把工程清理一下传上来吧。。

出0入0汤圆

 楼主| 发表于 2013-5-29 09:47:50 | 显示全部楼层
lcofjp 发表于 2013-5-29 09:44
把工程清理一下传上来吧。。

为老板打工,得遵守公司规定,工程就不能贴上来了 !

出0入0汤圆

发表于 2013-5-29 09:54:18 | 显示全部楼层
五木 发表于 2013-5-29 09:47
为老板打工,得遵守公司规定,工程就不能贴上来了 !

按通常的做法,这种常量都是放在.c文件中的,你可以移到c文件中试试。
这种错误是不太好分析的,一般要看整体结构才容易找到问题。

出0入0汤圆

发表于 2013-5-29 10:22:01 | 显示全部楼层
五木 发表于 2013-5-29 09:35
我这个.h其实就是个文件库,比如固定的 行 汉字,图片字模等。

相关联的就只有mian文件了,只有这里面调 ...

你之前是正常的吗?从什么时候开始出现这个情况的,修改了些什么,从这方面去查,原来正常的文件只要没有动过就不用去查那个文件,或者是缺了什么,比如什么宏定义之类的

出0入0汤圆

 楼主| 发表于 2013-5-29 10:48:51 | 显示全部楼层
yy8047 发表于 2013-5-29 10:22
你之前是正常的吗?从什么时候开始出现这个情况的,修改了些什么,从这方面去查,原来正常的文件只要没有 ...

之前是自己老台式电脑自己折腾的时候使用该结构一切正常,

现在在公司电脑上,使用该结构就出现这样的问题了!(注:公司电脑上装有IAR for ARM 和IAR FOR 430两个版本)

出0入0汤圆

发表于 2013-5-29 11:23:44 | 显示全部楼层
你两个IAR的版本一样吗

出0入0汤圆

 楼主| 发表于 2013-5-29 11:35:23 | 显示全部楼层
yy8047 发表于 2013-5-29 11:23
你两个IAR的版本一样吗

版本不一样,430 版本4.2,ARM 版本5.3。
安装在同一个主目录下。两个版本非得一样吗?

出0入0汤圆

 楼主| 发表于 2013-5-29 18:00:52 | 显示全部楼层
我把电脑里面的IAR统统的卸载掉,再重新安装IAR,但同样的问题还是存在!

出0入4汤圆

发表于 2013-5-29 18:07:45 | 显示全部楼层
五木 发表于 2013-5-29 18:00
我把电脑里面的IAR统统的卸载掉,再重新安装IAR,但同样的问题还是存在!

...

应该是你其他代码的问题,一般是少写了;(分号)什么的。
往出错的代码上面的代码找,应该就可以找得到。

出0入0汤圆

发表于 2013-5-30 08:31:56 | 显示全部楼层
五木 发表于 2013-5-29 11:35
版本不一样,430 版本4.2,ARM 版本5.3。
安装在同一个主目录下。两个版本非得一样吗? ...

也不是非得版本完全一样啊,只是版本不一样的话就必须新建工程,这样有可能某些设置会不一样,你在这方面查查看

出0入0汤圆

发表于 2013-5-30 08:32:57 | 显示全部楼层
晕,看错了,我的意思是问两台电脑上的IAR 430版本是否一样

出0入0汤圆

发表于 2013-5-30 08:45:02 | 显示全部楼层
他会提示你重复定义的吧?

出0入0汤圆

发表于 2013-5-30 08:47:22 | 显示全部楼层
这是他没有全报错,所以你看是第一行,你把第一行注释掉,他就会报错别的行了。

出0入0汤圆

 楼主| 发表于 2013-5-30 11:48:02 | 显示全部楼层
laujc 发表于 2013-5-29 18:07
应该是你其他代码的问题,一般是少写了;(分号)什么的。
往出错的代码上面的代码找,应该就可以找得到 ...

我现在把液晶送数据方式改变了,原来是并行发送数据,现在改成串行发送!其他没有改变!通过了!

另:串行、并行发送数据的函数名称都一样!

出0入0汤圆

 楼主| 发表于 2013-5-30 11:49:35 | 显示全部楼层
biansf2001 发表于 2013-5-30 08:45
他会提示你重复定义的吧?

????

出0入4汤圆

发表于 2013-5-30 11:50:02 | 显示全部楼层
仔细查一下,肯定是哪个地方有问题了,编译器不会骗人的。
不过只要一种方式能走通就可以了,不必纠结于一处。。。

出0入0汤圆

发表于 2013-6-4 13:49:45 | 显示全部楼层
路过学习中。。。感觉换个地方定义,先让他通过了在说。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 13:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表