五木 发表于 2013-5-29 08:30:09

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

本帖最后由 五木 于 2013-5-29 08:50 编辑

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

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

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

望各位大侠指点迷津!

lcofjp 发表于 2013-5-29 08:41:59

你需要把头文件和c文件都贴出来才能帮你分析。

yy8047 发表于 2013-5-29 08:42:44

应该是你的程序文件有问题,不一定是他报的那个文件

五木 发表于 2013-5-29 08:44:43

lcofjp 发表于 2013-5-29 08:41 static/image/common/back.gif
你需要把头文件和c文件都贴出来才能帮你分析。

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

五木 发表于 2013-5-29 09:00:47

yy8047 发表于 2013-5-29 08:42 static/image/common/back.gif
应该是你的程序文件有问题,不一定是他报的那个文件

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

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

NemoGu 发表于 2013-5-29 09:03:40

H文件中定義數組時不要初始化,移到C文件中

yy8047 发表于 2013-5-29 09:08:41

五木 发表于 2013-5-29 09:00 static/image/common/back.gif
跟踪 错误提示 里面的 “{”错误和“;” 都是跟踪到.h的第一行!

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

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

五木 发表于 2013-5-29 09:30:34

NemoGu 发表于 2013-5-29 09:03 static/image/common/back.gif
H文件中定義數組時不要初始化,移到C文件中

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

五木 发表于 2013-5-29 09:35:21

yy8047 发表于 2013-5-29 09:08 static/image/common/back.gif
这个现象以前见到过,但后来怎么解决的忘了,大概就是哪里定义不对的

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

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

lcofjp 发表于 2013-5-29 09:44:13

把工程清理一下传上来吧。。

五木 发表于 2013-5-29 09:47:50

lcofjp 发表于 2013-5-29 09:44 static/image/common/back.gif
把工程清理一下传上来吧。。

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

lcofjp 发表于 2013-5-29 09:54:18

五木 发表于 2013-5-29 09:47 static/image/common/back.gif
为老板打工,得遵守公司规定,工程就不能贴上来了 !

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

yy8047 发表于 2013-5-29 10:22:01

五木 发表于 2013-5-29 09:35 static/image/common/back.gif
我这个.h其实就是个文件库,比如固定的 行 汉字,图片字模等。

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

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

五木 发表于 2013-5-29 10:48:51

yy8047 发表于 2013-5-29 10:22 static/image/common/back.gif
你之前是正常的吗?从什么时候开始出现这个情况的,修改了些什么,从这方面去查,原来正常的文件只要没有 ...

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

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

yy8047 发表于 2013-5-29 11:23:44

你两个IAR的版本一样吗

五木 发表于 2013-5-29 11:35:23

yy8047 发表于 2013-5-29 11:23 static/image/common/back.gif
你两个IAR的版本一样吗

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

五木 发表于 2013-5-29 18:00:52

我把电脑里面的IAR统统的卸载掉,再重新安装IAR,但同样的问题还是存在!

laujc 发表于 2013-5-29 18:07:45

五木 发表于 2013-5-29 18:00 static/image/common/back.gif
我把电脑里面的IAR统统的卸载掉,再重新安装IAR,但同样的问题还是存在!

...

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

yy8047 发表于 2013-5-30 08:31:56

五木 发表于 2013-5-29 11:35 static/image/common/back.gif
版本不一样,430 版本4.2,ARM 版本5.3。
安装在同一个主目录下。两个版本非得一样吗? ...

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

yy8047 发表于 2013-5-30 08:32:57

晕,看错了,我的意思是问两台电脑上的IAR 430版本是否一样

biansf2001 发表于 2013-5-30 08:45:02

他会提示你重复定义的吧?

biansf2001 发表于 2013-5-30 08:47:22

这是他没有全报错,所以你看是第一行,你把第一行注释掉,他就会报错别的行了。

五木 发表于 2013-5-30 11:48:02

laujc 发表于 2013-5-29 18:07 static/image/common/back.gif
应该是你其他代码的问题,一般是少写了;(分号)什么的。
往出错的代码上面的代码找,应该就可以找得到 ...

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

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

五木 发表于 2013-5-30 11:49:35

biansf2001 发表于 2013-5-30 08:45 static/image/common/back.gif
他会提示你重复定义的吧?

????

laujc 发表于 2013-5-30 11:50:02

仔细查一下,肯定是哪个地方有问题了,编译器不会骗人的。
不过只要一种方式能走通就可以了,不必纠结于一处。。。

gfy200866 发表于 2013-6-4 13:49:45

路过学习中。。。感觉换个地方定义,先让他通过了在说。
页: [1]
查看完整版本: IAR编译时总是提示h文件第一行定义的常量未定义