解决C语⾔下enumerator重复声明的问题
本⼈最近在buntu系统下⽤C编译时,出现error:redeclaration of enumerator 'xxx’这个报错,表⽰重复声明了⼀个枚举enum。
如在led.h中声明了⼀个enum
#ifndef __LED_H_
#define __LED_H_
typedef enum
{
BlueLed,
YellowLed,
WhiteLed
}Led_color_t;
#endif
然后,在main.c中引⽤了这个头⽂件#include “led.h”明解c语言
#include"led.h"
#include"relay.h"
但另⼀个⽂件relay.h中也引⽤了这个"led.h".
#ifndef __RELAY_H_
#define __RELAY_H_
#include"led.h"
#endif
此时如果main.c中同时引⽤"led.h"和"relay.h"就会报这个错.
解决⽅法是把main.c中引⽤led.h删除,因为引⽤的relay.h中已经包含了"led.h"了,不需要再引⽤。
/
/#include "led.h"
#include"relay.h"
⼩结:这⾥我⼀开始认为已经做了头⽂件免重复包含的#ifndef xxx.h的说明,就可以随便引⽤了,结果发现还是会报错。这⾥也强调了代码规范的重要性,⼀定要仔细检查代码,看下有没有重复包含的情况,重复包含的头⽂件需要尽量删除,为了代码的可读性和规范性也为了减少⼀些错误的产⽣,这是必要的。