关于keil中会出现的redefinition

redefinition错误

经常在写代码的时候出现这个问题
main.c(10): error C231: ‘init_Port’: redefinition
然后就在想为什么,代码是好的,自己也进行了声明,感觉哪里都没问题,今天我也遇到了这个问题,所以记录下来,以免下次在遇到这种错误,感觉莫名其妙。
先看看我的代码:

#include <C8051F340.H>
#include "main.h"
假设P1^0接地  P1^1是温度采样值输出
init_Port();
init_timer0();
unsigned char times;
void main(){
	init_Port();
	init_timer0();//定时器中断初始化
	
}
void init_Port(){
	
}
void init_timer0(){
	
	TMOD=0x01;
	TH0=(65535-50000)/256;
	TL0=(65535-50000)%256;
	ET0=1;
	TR0=1;
	EA=1;
}
//100ms进行执行程序
void timer0()interrupt 1{
	times++;
	if(times==1){
		times=0;
		TH0=(65535-50000)/256;
		TL0=(65535-50000)%256;
		//中断程序
	}
}

编译后他会告我
init_Port();
init_timer0();

这两函数重复定义了,一开始我在想,我进行声明了也没有重复定义,哪里出错了,找了好久我才发现,我在声明的时候直接写了函数名,而没有返回类型。这样编译器就会重复进行编译,所以会出现以上错误,所以声明的时候也应该是:
void init_Port();
void init_timer0();

当然了,我代码还没写完,只是为了说明一下这个错误。
还有其他的可能就是真的有可能重复定义,因为在某些.h文件中已经定义过了而自己却不知道的,这个时候就该好好找找。

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Keil redefinition的解决方法取决于具体的情况。一般来说,这个问题是由于重复定义变量或函数引起的。解决方法可能包括: 1. 检查代码中是否有重复定义的变量或函数,并将其删除或重命名。 2. 确保头文件只被包含一次,可以使用#ifndef和#define来避免重复包含。 3. 检查是否有多个源文件包含了同一个头文件,如果是,可以将头文件的内容放到一个单独的源文件中,并在需要使用的地方包含该源文件。 4. 如果是在使用库文件时出现了redefinition错误,可以检查库文件是否正确链接,并且确保库文件的头文件只被包含一次。 总之,解决Keil redefinition问题的关键是找到重复定义的变量或函数,并将其删除或重命名。 ### 回答2: Keil是一款常用的嵌入式开发工具,在使用Keil的过程中,有时候可能会遇到“Redefinition”错误。这个问题的出现是因为在代码中多次定义了同样的变量、函数、结构体等,导致编译器无法识别哪个是正确的定义,从而报出这个错误。 要解决“Redefinition”错误,我们需要找到代码中出现的重复定义,然后将其删除或修改。 首先,我们需要找到具体的错误位置。在编译器输出窗口或错误列表中,会列出具体的错误信息和位置。我们可以单击这个位置,跳转到相应的代码位置,然后查看出现重复定义的变量、函数、结构体等。 然后,我们需要分析代码逻辑,找出为什么会出现重复定义。这些定义可能在不同的源文件或头文件中出现,如果出现了重复定义,需要删除其中之一或将它们合并,并且保持定义的一致性。 如果出现了多个头文件引用同一变量或结构体,在其中一个头文件中加入条件编译指令可以避免重复定义。例如,在头文件中加入以下语句: #ifndef MY_VARIABLE #define MY_VARIABLE // 定义变量或结构体 // ... #endif 这样,即使多个文件同时引用这个头文件,也只会有一个变量或结构体被定义,可以有效避免重复定义的问题。 总之,解决Keil“Redefinition”错误的方法是通过找出代码中的重复定义,然后删除或修改之。同时,需要注意代码中不同文件和头文件的定义不能相互冲突。 ### 回答3: Keil是一款常用的嵌入式软件开发工具,在使用Keil进行开发时,有时会出现“redefinition”的错误提示。这种错误提示通常意味着某个函数、变量或宏定义已经存在了多个,会导致编译错误。在这种情况下,我们需要解决“redefinition”错误,以便正确编译程序。 一般来说,在Keil中解决redefinition错误的方法是: 1. 查看是否有重复的代码。一般导致redefinition错误的原因是代码中存在重复的变量、函数或宏定义,可能是由于复制代码时出错导致的。可以通过搜索或排查来找出重复的代码,并删除其中的一个版本即可。 2. 确认文件中是否存在重复的代码。在Keil中,可以查看所有的代码文件,查看是否存在相同的代码文件。如果存在重复的代码文件,则需要删除其中一个或将它们合并。 3. 在头文件中定义宏。在编写头文件时,需要使用#ifndef #define #endif语句来防止头文件中的宏定义被重复定义。这可用于避免在引入多个头文件时出现redefinition错误。 4. 查看头文件是否被重复包含。在源代码中,可能会包含多个头文件,如果头文件被包含多次,可能会导致宏和函数重新定义。因此,我们需要查询源代码中的包含关系,并确保头文件只被包含一次。 综上所述,当出现Keil redefinition错误时,我们可以通过检查源代码、头文件和文件包含关系等多方面来找出重复定义的变量、函数或宏定义,以解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值