注册 登录
查看: 1361|回复: 18

关于include.h里面的MKL_BME.h,什么情况

[复制链接]
发表于 2014-3-2 20:46:37 | 显示全部楼层 |阅读模式
main函数里面包含了include.h,include.h包含了MKL_BME.h这样编译没有问题,如果是自己新建一个c文件,包含include.h,就会出现以下出错Error[Li006]: duplicate definitions for "BME_XOR_H"; in "H:\1-2飞思\资料\26\程序\fight_3\Prj\IAR\Debug\Obj\isr.o", and "H:\1-2飞思\资料\26\程序\fight_3\Prj\IAR\Debug\ Obj\main.o"


请问这是什么问题

回复

使用道具 举报

 楼主| 发表于 2014-3-2 20:47:34 | 显示全部楼层
如果把MKL_BME.h注释掉那编译也没问题
回复 支持 1 反对 0

使用道具 举报

发表于 2014-3-2 20:52:06 | 显示全部楼层
Chip\Inc\MKL_BME.h  文件里面修改一下下面这个代码看看。
  1. #elif defined(__ICCARM__)   //IAR compiler
  2. #define _BME_INLINE    inline
改为
  1. #elif defined(__ICCARM__)   //IAR compiler
  2. #define _BME_INLINE  static   inline

点评

好厉害啊! 怎么知道的111  发表于 2014-6-25 14:16
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-2 21:15:32 | 显示全部楼层
山外メ雲ジ 发表于 2014-3-2 20:52
Chip\Inc\MKL_BME.h  文件里面修改一下下面这个代码看看。改为

非常感谢,问题解决了
可惜不明白为什么会这样,如果可以的话能不能告诉我为什么这么做啊?
回复 支持 反对

使用道具 举报

发表于 2014-10-24 19:56:12 | 显示全部楼层
山外メ雲ジ 发表于 2014-3-2 20:52
Chip\Inc\MKL_BME.h  文件里面修改一下下面这个代码看看。改为

很想了解这样操作的原因
回复 支持 反对

使用道具 举报

发表于 2014-10-24 20:09:58 | 显示全部楼层
乁_year 发表于 2014-10-24 19:56
很想了解这样操作的原因

因为函数放在头文件里定义,所以多个文件包含的时候,就会出现重复定义的问题,得加上static来修饰为静态。
回复 支持 反对

使用道具 举报

发表于 2014-10-24 20:19:24 | 显示全部楼层
仰逸致 发表于 2014-10-24 20:09
因为函数放在头文件里定义,所以多个文件包含的时候,就会出现重复定义的问题,得加上static来修饰为静态 ...

正解
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-10-25 00:26:43 | 显示全部楼层
仰逸致 发表于 2014-10-24 20:09
因为函数放在头文件里定义,所以多个文件包含的时候,就会出现重复定义的问题,得加上static来修饰为静态 ...

谢谢解答
又有收获了
回复 支持 反对

使用道具 举报

发表于 2014-10-25 01:49:09 | 显示全部楼层
乁_year 发表于 2014-10-25 00:26
谢谢解答
又有收获了

哈哈,那收藏了多少宝贝?
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-10-25 11:12:59 | 显示全部楼层
山外メ雲ジ 发表于 2014-10-25 01:49
哈哈,那收藏了多少宝贝?

MKL_BME.h???什么头文件呀,怎么好像没见过呀

#elif defined(__ICCARM__)   //IAR compiler  #define _BME_INLINE    inline根据IAR编译器宏定义选择吧意思是用 _BME_INLINE 代替 inline???望山外哥答疑
回复 支持 反对

使用道具 举报

发表于 2014-10-25 11:14:41 | 显示全部楼层
gsc617 发表于 2014-10-25 11:12
MKL_BME.h???什么头文件呀,怎么好像没见过呀

#elif defined(__ICCARM__)   //IAR compiler  #de ...

这个是KL26的代码,KL26有BME位操作的模块。就是替换成inline
回复 支持 反对

使用道具 举报

发表于 2014-10-25 11:22:54 | 显示全部楼层
山外メ雲ジ 发表于 2014-10-25 11:14
这个是KL26的代码,KL26有BME位操作的模块。就是替换成inline

晕,原来是KL26的,难怪没见过。用力研究了一下内存分配(.icf文件),有点意思,理解了许些。谢谢山外哥

回复 支持 反对

使用道具 举报

发表于 2014-10-25 11:24:04 | 显示全部楼层
gsc617 发表于 2014-10-25 11:22
晕,原来是KL26的,难怪没见过。用力研究了一下内存分配(.icf文件),有点意思,理解了许些。谢谢山 ...

帮忙推销一下书本啊
回复 支持 反对

使用道具 举报

发表于 2014-10-25 11:43:23 | 显示全部楼层
山外メ雲ジ 发表于 2014-10-25 11:24
帮忙推销一下书本啊

必须可以,本来你这神书就写得非常好,说来惭愧,我都玩这方面1年多了(大三开始玩的,有点迟了),
看你这本书很多看似基础的知识(很多我都没有系统学习过),我大部分都能看懂可是真得好好消化吸收呀,

不能急所以天天就看一丁点(主要还得干别的事儿又一个小项目了,还不想找工作

我们学校图书馆这方面还算土豪的,每学期都会买很多新书的。我已经向学校图书馆系统推荐了,

还有估计负责比赛的老师也会买来作为资料发给参赛的队伍(我们同学几乎都在用你底层库都会知道的)


回复 支持 反对

使用道具 举报

发表于 2014-10-25 11:53:39 | 显示全部楼层
山外メ雲ジ 发表于 2014-10-25 11:24
帮忙推销一下书本啊

上一个小项目SPI协议被坑的主要原因是430的低功耗模式(中断才能唤醒),他会把单片机MCLK关掉(MCLK提供给外扩),
所以有时好(中断触发了)有时又不行(退出中断了),,,这么简单的问题,我把硬件软件没少折腾,快弄死我了

回复 支持 反对

使用道具 举报

发表于 2014-10-25 12:36:59 | 显示全部楼层
gsc617 发表于 2014-10-25 11:43
必须可以,本来你这神书就写得非常好,说来惭愧,我都玩这方面1年多了(大三开始玩的,有点迟了),
...

项目一个接一个,不见得是好事。学生阶段,基础知识比较重要。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-10-25 17:31:47 | 显示全部楼层
山外メ雲ジ 发表于 2014-10-25 12:36
项目一个接一个,不见得是好事。学生阶段,基础知识比较重要。

我这些项目都是蹭一下学长们的活干的,不为比赛获奖的。不过至少有个学习的切入点呀,
太对了,所谓的大神就是各种基础知识很扎实,学什么都快都会。。。像山外哥就是了


回复 支持 反对

使用道具 举报

发表于 2014-10-25 17:53:20 | 显示全部楼层
gsc617 发表于 2014-10-25 17:31
我这些项目都是蹭一下学长们的活干的,不为比赛获奖的。不过至少有个学习的切入点呀,
太对了,所谓的 ...

牛人一定有做过项目,但做过项目的不一定是牛人。

回复 支持 反对

使用道具 举报

发表于 2014-10-25 19:20:13 | 显示全部楼层
pitceixbuj 发表于 2014-10-25 17:53
牛人一定有做过项目,但做过项目的不一定是牛人。

这话我必须相信呀,不过不做项目真的挺难成为大神的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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