打印

请教个问题-关于ICCAVR编译

[复制链接]
3005|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CIOneTwo|  楼主 | 2011-7-14 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在有三个.C文件a.c,b.c,d.c,一个.h文件,问题如下:
问题1:
a.c有函数void a(void)
b.c,d.c里面调用a.c此函数a()
我并没有在.h函数里面声明外部函数,为毛ICCAVR也能编译通过并无提示函数未定义啊?
问题2:
在Project-->Options里面我也没有设置ICCAVR Include头文件地址,为毛也能编译通过并无提示未找到头文件啊?
问题3:
ICCAVR多个C文件编译的顺序是啥啊?主函数-->其他的根据相关关系连接顺序?
似乎makefile里面是按顺序编译文件的啊......
请教大家,谢谢......

相关帖子

沙发
CIOneTwo|  楼主 | 2011-7-14 14:03 | 只看该作者
请高手帮忙啊

使用特权

评论回复
板凳
zgx7261663| | 2011-7-14 15:56 | 只看该作者
你出现的问题有点怪异,我不设置INCLUDE路径,不在.H文件声明外部函数就有错误提示的啊? 是你ICC设置的问题?似乎你的ICC很智能耶!   弄个仿真器单步调试下程序,看看运行到a();程序的时候是什么效果,如果进入a()里边运行了,那只能说你的ICC比较牛×了!

使用特权

评论回复
地板
zgx7261663| | 2011-7-14 15:58 | 只看该作者
你是不是没有把所有.C文件和.H文件放在编译目录下啊?

使用特权

评论回复
5
CIOneTwo|  楼主 | 2011-7-15 08:32 | 只看该作者
谢谢楼上,所有.c和.h我都放在编译目录下了,我也觉得挺不可思议的,ICCAVR我没有做任何设定,就是建个工程,把.c和.h文件拖进来,然后设置下,include地址,output地址就编译了,现在看来include地址设置也免了.
我虽未用仿真器调试,不过我要实现的功能是OK的,说明编译并无问题,iccavr在编译的时候已经自动把相关文件进行相关链接了,是智能还是BUG啊,我晕啊......

使用特权

评论回复
6
原野之狼| | 2011-7-15 08:50 | 只看该作者
只要有声明即可,不需要声明为外部函数。

使用特权

评论回复
7
CIOneTwo|  楼主 | 2011-7-15 12:35 | 只看该作者
谢谢小狼的回复,我在.h文件里面连声明都没有,但是b.c,d.c照样可以用a.c中的函数,但是数组,变量不可以,必须要有外部声明。

使用特权

评论回复
8
原野之狼| | 2011-7-15 12:42 | 只看该作者
把警告级别调高点 看看有没有信息输出
在没有声明的时候 编译器会采取隐式推导出外部函数的接口方式
不过这种方式存在这很大的风险 对于简单的接口不会出问题 但是对于复杂的接口就未必能正确运行了

使用特权

评论回复
9
CIOneTwo|  楼主 | 2011-7-15 13:58 | 只看该作者
LS说的我理解不了了,不过为了保险,我还是在程序里面加上外部声明吧,免得以后出BUG。
谢谢zgx7261663,谢谢小狼。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:贫寒铸就人格,逆境创造人生。

0

主题

1194

帖子

1

粉丝