论坛风格切换切换到宽版
  • 4673阅读
  • 12回复

求助ICCAVR的多文件联合编译问题 [复制链接]

上一主题 下一主题
离线永远的FM
 
发帖
12110
只看楼主 倒序阅读 0楼 发表于: 2009-07-25
现在有个工程,里面包含3个c文件和一个h文件,h文件对器件管脚进行定义。在这三个c文件中分散放置了一些函数,但三个c文件里不同的函数会用到同一个公共变量(例如定义dds输出频率的变量),而且这个变量所有函数都能使用并有可能将他改变。请问这个变量定义要怎么做?我尝试了多种方法,包括在头文件里添加都不行,提示重复定义。
离线bg7jzw0
发帖
165
只看该作者 1楼 发表于: 2009-07-25
你的头文件加了下面的外套没?
#ifndef _myhead_h_
#define _myhead_h_
......
#endif
离线永远的FM
发帖
12110
只看该作者 2楼 发表于: 2009-07-25
'
你的头文件加了下面的外套没?
#ifndef _myhead_h_
#define _myhead_h_
......
#endif
'

这倒没有,我以前用c51时候都有这些东西,不过看了人家的范例程序后我没有加这些。其实不加也可以,只要在引用时采用“include.h”这种格式(不用<>引用)。
现在问题是他提示重复定义。要么就不能用。
离线bg6qbp
发帖
362
只看该作者 3楼 发表于: 2009-07-28
#include <iom16v.h>
#include "lcd1602.h"

用单书名号和双引号编译都可通过,我引用系统提供的头文件使用单书名号,
引用自己写的头文件时用双引号.

多文件编译时,各文件需全部添加到项目中.
离线zhangjw
发帖
46
只看该作者 4楼 发表于: 2009-07-29
[quote=永远的fm]这倒没有,我以前用c51时候都有这些东西,不过看了人家的范例程序后我没有加这些。其实不加也可以,只要在引用时采用“include.h”这种格式(不用<>引用)。
现在问题是他提示重复定义。要么就不能用。[/quote]


加了这些就防止重定义的,不加当然要提示的


把出错提示贴出来
离线bd7qw
发帖
2371
只看该作者 5楼 发表于: 2009-07-29
过来看看,不懂
离线永远的FM
发帖
12110
只看该作者 6楼 发表于: 2009-07-29
现在已经搞好了,坛子上高人就是多。
一般在一个c文件里定义一个变量int vefire,然后在h头文件里写上:extern int vefire,定义的数组也如法炮制,但一定要注意,extern后面的变量仅仅是个声明,不能有赋值,数组也一样,否则会提示重复定义
离线bg7jzw0
发帖
165
只看该作者 7楼 发表于: 2009-07-29
全局变量通常是在头文件里定义的,在c文件里就不用extern了,你这样会做很多重复工作。
离线danju
发帖
415
只看该作者 8楼 发表于: 2009-07-30
请问楼主,你的avr用什么工具下载程序?
有没有简便的工具?
离线永远的FM
发帖
12110
只看该作者 9楼 发表于: 2009-07-30
'
请问楼主,你的avr用什么工具下载程序?
有没有简便的工具?
'

用iccavr里自带的下载工具,网上找的“孟加拉”下载线电路,速度很快。
离线danju
发帖
415
只看该作者 10楼 发表于: 2009-07-31
我目前只找到并口的下载线,倒是很简单,可惜现在电脑都是usb了,没有并口 串口了,很是郁闷
离线BG4RFF
发帖
1581
只看该作者 11楼 发表于: 2009-08-02
网上有mega8做usb,试试吧
离线danju
发帖
415
只看该作者 12楼 发表于: 2009-08-02
'
网上有mega8做usb,试试吧
'
谢谢!

就是mega8也还得下载,哪位知道有没有不需要安装的下载avr mega芯片的软件?我先用u盘找个有并口的电脑去下载,软件要安装就麻烦点,最好用一下别人的电脑而不留下什么“垃圾”。

有知道的告诉一声啊,谢谢了!