解决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”

#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的说明,就可以随便引用了,结果发现还是会报错。这里也强调了代码规范的重要性,一定要仔细检查代码,看下有没有重复包含的情况,重复包含的头文件需要尽量删除,为了代码的可读性和规范性也为了减少一些错误的产生,这是必要的。

你可能感兴趣的:(解决C语言下enumerator重复声明的问题)