找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2904|回复: 9
收起左侧

keil4 C语言变量重复定义的问题

[复制链接]
ID:531175 发表于 2019-5-19 23:07 | 显示全部楼层 |阅读模式
最近在练习模块化编程,现在我有两个.c文件,都要用到 uint16,我在每个.h文件里都写了  typedef  unsigned int uint16;
可是软件报错,
Build target 'Target 1'
compiling LCD设计的秒表.c...
compiling miaob.c...
DELAY.H(4): error C231: 'uint16': redefinition
compiling delay.c...
DELAY.C(4): error C231: 'uint16': redefinition
Target not created
我该怎么改呢

回复

使用道具 举报

ID:123289 发表于 2019-5-20 07:52 | 显示全部楼层
把错误信息译成你能懂的语言,按照提示去改。
回复

使用道具 举报

ID:164602 发表于 2019-5-20 08:34 | 显示全部楼层
错误231,就是重复定义。
你的头文件,应该加上条件编译就没问题了。
就是:
#ifndef
......
#endif
这样,就不会有重复编译的错误
回复

使用道具 举报

ID:527827 发表于 2019-5-20 08:44 | 显示全部楼层
就写一次

或者提升一级,做成一个公用的.h文件,在里面定义
回复

使用道具 举报

ID:285194 发表于 2019-5-20 08:45 | 显示全部楼层
只需要定义一个,然后另外一个.c文件包含定义的那个.h文件,就可以使用里面宏定义的东西了
回复

使用道具 举报

ID:424598 发表于 2019-5-20 09:11 来自手机 | 显示全部楼层
放在一个公共的.h
回复

使用道具 举报

ID:531175 发表于 2019-5-20 12:33 | 显示全部楼层
774559006 发表于 2019-5-20 08:45
只需要定义一个,然后另外一个.c文件包含定义的那个.h文件,就可以使用里面宏定义的东西了

好嘞,谢谢
回复

使用道具 举报

ID:531175 发表于 2019-5-20 12:34 | 显示全部楼层
ssk7793 发表于 2019-5-20 09:11
放在一个公共的.h

好嘞,谢谢你
回复

使用道具 举报

ID:511890 发表于 2019-5-20 14:19 | 显示全部楼层
如果你在.c中include了.h,那么头文件和.C可以理解为是连通的,所有的在一个文件里,都起作用的。如果你在DELAY.C里include了DELAY.h,同时两个文件里都有typedef  unsigned int uint16: 那么肯定会提示重定义。去掉其中一个就行。如果没有include,就没问题。
回复

使用道具 举报

ID:530977 发表于 2019-5-22 09:36 来自手机 | 显示全部楼层
#define   unsigned int uint
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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