标题: keil4 C语言变量重复定义的问题 [打印本页]

作者: 迷迷惘惘    时间: 2019-5-19 23:07
标题: keil4 C语言变量重复定义的问题
最近在练习模块化编程,现在我有两个.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
我该怎么改呢


作者: yzwzfyz    时间: 2019-5-20 07:52
把错误信息译成你能懂的语言,按照提示去改。
作者: HC6800-ES-V2.0    时间: 2019-5-20 08:34
错误231,就是重复定义。
你的头文件,应该加上条件编译就没问题了。
就是:
#ifndef
......
#endif
这样,就不会有重复编译的错误
作者: w282529350    时间: 2019-5-20 08:44
就写一次

或者提升一级,做成一个公用的.h文件,在里面定义
作者: 774559006    时间: 2019-5-20 08:45
只需要定义一个,然后另外一个.c文件包含定义的那个.h文件,就可以使用里面宏定义的东西了
作者: ssk7793    时间: 2019-5-20 09:11
放在一个公共的.h
作者: 迷迷惘惘    时间: 2019-5-20 12:33
774559006 发表于 2019-5-20 08:45
只需要定义一个,然后另外一个.c文件包含定义的那个.h文件,就可以使用里面宏定义的东西了

好嘞,谢谢
作者: 迷迷惘惘    时间: 2019-5-20 12:34
ssk7793 发表于 2019-5-20 09:11
放在一个公共的.h

好嘞,谢谢你
作者: 幻剑心    时间: 2019-5-20 14:19
如果你在.c中include了.h,那么头文件和.C可以理解为是连通的,所有的在一个文件里,都起作用的。如果你在DELAY.C里include了DELAY.h,同时两个文件里都有typedef  unsigned int uint16: 那么肯定会提示重定义。去掉其中一个就行。如果没有include,就没问题。
作者: 三感    时间: 2019-5-22 09:36
#define   unsigned int uint




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1