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文件中已经定义过了而自己却不知道的,这个时候就该好好找找。