6712|5

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

#include 出现 C:\KEIL\C51\INC\SYNCMOS\SM8958A.H(11): error C231: 'P0': [复制链接]

我的project 里24C16.C、24C16.h、CS5532.C、cs5532.h、main.c五个文件,使用的是syncmos 的sm8958a 。其中在24C16.H里有#include ,在cs5532.h里也有#include ,现在我在main.c里有#include "24c16.h" 和 #include "cs5532.h",当我build main.c时,出现C:\KEIL\C51\INC\SYNCMOS\SM8958A.H(11): error C231: 'P0': redefinition这样的错误。
但我把device改为sm8052以后,把#include 改为#include
一切都ok了。这是怎么回事?我要用的是sm8958a, 那我该怎么办呢?

最新回复

各位高手:怎么解决啊?  详情 回复 发表于 2009-5-25 16:20
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我已经得到帮助了。
Re:
Some include files have protection from multiple inclusion. In this case, the file "sm8958a.h" doesn't seem to have that.

However, hy do you modify 24C16.h and CS5532.h to include sm8958a.h? That is a conceptual mistake.

If you have one include file "global.h", then you may add to that file.

If you have a file 24c16.h that is included by 25c16.c and a number of other source files (together with zero or more other include files) then you shouldn't add sm8958a.h to 24c16.h.

Instead, you should include sm8958a.h AND 24c16.h in your 24c16.c file.

And you should include sm8958a.h (before your own include files) AND 24c16.h AND CS5532.h in your main.c file.
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
好像说是加头文件先后的问题...

一般的规则是:
先包含语言系统定义的标准头文件:像stdio.h这类

然后是专属芯片的特殊头文件:像reg51.H这类

最后才是用户功能头文件,就是自己写的功能库
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

4
 
好像没那么简单,呵呵.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
这个简单啊,网上搜一下就得到答案了.
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(初级)

6
 
各位高手:怎么解决啊?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表