论坛风格切换切换到宽版
  • 4777阅读
  • 8回复

WINAVR的redefined警告一般什么情况下发生 [复制链接]

上一主题 下一主题
离线digi01
 
发帖
82
只看楼主 倒序阅读 0楼 发表于: 2010-07-14
我用pd在make all时遇到一个警告。百思不得其解。

in file included from angle.c
digi01app.h1: warning: "f_cpu" redefined
<command line>1: warning: this is the location of the previous definition

后来打开makefile看 f_cpu = 8000000,而我的app里定义是:
#define f_cpu 1000000ul      /* 一兆基频,内置rc */

把makefile里的8改成1就好了。
离线kenny21
发帖
472
只看该作者 1楼 发表于: 2010-07-15
不要用winavr,很多bug。
离线digi01
发帖
82
只看该作者 2楼 发表于: 2010-07-15
我认为捉虫比编程本身更有趣。diy的好处是,不需要赶时间
离线bd1es
发帖
2096
只看该作者 3楼 发表于: 2010-07-15
如果在程序中有多处定义过某个宏,比如f_cpu,编译器就报这错。解决的方法当然是只在一处定义。在编译器命令行中定义宏与明确写在代码中是等效的。

可以这样写:
#ifndef f_cpu
#define f_cpu xxxxx
#endif

或者:
#ifdef f_cpu
#undef f_cpu
#define f_cpu xxxxx
#endif

注意二者含义不一样。

这不是bug,所有c编译器都这模样。
离线kenny21
发帖
472
只看该作者 4楼 发表于: 2010-07-15
'
我认为捉虫比编程本身更有趣。diy的好处是,不需要赶时间 [表情]
'

闲人当然可以这么看啦。
离线bd1es
发帖
2096
只看该作者 5楼 发表于: 2010-07-15
'
闲人当然可以这么看啦。 [表情]
'


winavr转iccavr不难,可以写个替换系统函数和宏定义的头文件,然后对中断向量的定义作些修改。几乎可以完全不改语句。
离线Sullivan
发帖
4817
只看该作者 6楼 发表于: 2010-07-15
我们做产品都用winavr,没发现有什么不好的地方
btw: 不是那种几百几千行的,最小的一个项目是20多万行代码。
离线BG4RFF
发帖
1581
只看该作者 7楼 发表于: 2010-08-15
winavr不要版权的,ICC会说你是盗版的
离线digi01
发帖
82
只看该作者 8楼 发表于: 2010-08-17
多谢大家,程序编译ok了。
上个视频,最终效果还算满意



http://v.youku.com/v_show/id_xmtkzodkynzi0.html