c语言redefinition,keil里出现redefinition,求解决方法呀

keil里出现redefinition,求解决方法呀0

#include

#include

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

#define ASC_CHR_WIDTH 8

#define ASC_CHR_HEIGHT 12sbit LCD_R_S=P1^2;

sbit RES=P1^3;

sbit LCD_SCK=P1^1;

sbit SDA=P1^0;

sbit LCD_CS1=P1^4;

bit  Flage1=0;

sbit DS=P2^2;

sbit DS1302_CLK=P2^1;

sbit DS1302_RST=P2^4;

sbit DS1302_IO=P2^0;

sbit LED=P1^7;

uchar temp,flag_t,wait=0,sy_t,signal,ad,ad_signal,flag_c,interru=0;

unsigned char year,month,day,hour,min,sec;

unsigned int  hour_lmt1=12,hour_lmt2=14,min_lmt1=30,min_lmt2=30,hour_lmt3=17,min_lmt3=30,hour_lmt4=19,min_lmt4=0,hour_lmt5=22,min_lmt5=30,hour_lmt6=7,min_lmt6=30;

void write_cmd(unsigned char cmd)

{

uchar  i,j;

LCD_CS1=0;

LCD_R_S=0;

LCD_SCK=1;

for(i=0;i<8;i++)

{

j=cmd;

LCD_SCK=0;

SDA=cmd&0x80;

LCD_SCK=1;

cmd=j<<1;

}

LCD_CS1=1;

LCD_R_S=1;

}程序太长,截取其中出问题的部分,编译结果是LCD_SCK redefinition,如果删了LCD_SCK,出现LCD_R_S redefinition。。感觉没有重复定义,一直找不到错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "Redefinition" 错误通常发生在您在代码中多次定义同一变量或函数的情况下。这可能是因为您在头文件和源文件中都定义了相同名称的变量或函数,或者您在不同的源文件中包含了相同名称的头文件。 要解决这个问题,您需要检查代码中所有的变量和函数定义,并确保它们只被定义一次。如果您使用头文件,请确保在每个源文件中只包含一次。如果您定义了全局变量,请确保它们只被定义一次,并在其他文件中使用 extern 声明它们。 另外,如果您正在使用 C++,那么您需要确保在头文件中使用了头文件保护机制,以避免重复定义。这可以通过在头文件开头和结尾添加 #ifndef 和 #endif 来实现。 ### 回答2: 单片机出现redefinition指的是在程序中对同一个变量或函数进行了多次定义。这种情况通常是由于代码中存在重复的定义语句或者头文件被多次引用所导致。 在单片机编程中,每个变量和函数都需要在程序中进行定义,以便在程序中被正确地使用。如果在同一个作用域中对同一个变量或函数进行多次定义,编译器会报出redefinition错误。 解决redefinition错误的方法有以下几种: 1. 检查代码中是否存在重复定义的变量或函数,并将其删除或合并。 2. 检查是否重复引用了相同的头文件,如果是,只需引用一次即可。 3. 使用头文件保护宏(ifndef、define、endif)来避免头文件的重复引用。 例如,如果在程序中同时引用了两次相同的头文件,编译器会认为变量或函数被重定义,从而报出redefinition错误。为了解决这个问题,可以在头文件的开头添加如下头文件保护宏: ``` #ifndef HEADER_FILE_NAME_H #define HEADER_FILE_NAME_H // 此处是头文件的内容 #endif ``` 这样,在每次引用头文件时,编译器会先检查是否已经定义过该头文件,如果已经定义过,则不再重复引用。 总之,redefinition错误是单片机编程中常见的错误之一,通常是由于重复定义变量或函数或重复引用头文件导致的。解决这个问题需要仔细检查代码,合理使用头文件保护宏以及避免重复定义。 ### 回答3: 单片机出现“redefinition”错误通常是因为在程序中重复定义了相同的变量、函数或宏。这种错误会导致编译器无法确定所使用的标识符的唯一性,从而产生冲突。 要解决这个问题,我们可以采取以下几个步骤: 1. 检查代码中是否存在重复定义的变量。可能是在不同的作用域或文件中定义了相同名称的变量。可以尝试将重复定义的变量进行删除或重命名,确保每个变量都具有唯一的标识符。 2. 检查代码中是否存在重复定义的函数。同样地,可能是在不同的作用域或文件中定义了相同名称的函数。需要确保每个函数的名称是唯一的。可以尝试删除或重命名重复定义的函数来解决问题。 3. 检查代码中是否存在重复定义的宏。宏定义是通过预处理器进行替换的文本片段,容易导致冲突。如果存在重复定义的宏,可以尝试删除或重命名宏来消除错误。 在解决这个问题的过程中,要注意代码中的作用域和命名规则,确保每个标识符都具有唯一的名称。此外,及时清除不需要的变量、函数和宏定义,可以提高代码的可读性和维护性。最后,要定期进行代码检查,及时发现和解决重定义问题,避免在编译阶段出现错误。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值