避免C语言中枚举的重新定义

避免C语言中枚举的重新定义,c,enums,C,Enums,我需要一个关于如何使这项工作的解释(如果可能的话) 因此,在我的头文件中,我有一个BOOL类型的enum声明,其中包含一些我应该实现的例程 #ifndef _TABLE_H #define _TABLE_H typedef enum BOOL { false, true } Boolean; #endif //_TABLE_H 我在一个文件中使用这个接口,该文件定义了使用bool类型的各种例程(这次不是Boolean) 我希望能够同时使用这两种语言,如何做到这一点?在您提供的代码中,您正在

我需要一个关于如何使这项工作的解释(如果可能的话)

因此,在我的头文件中,我有一个BOOL类型的enum声明,其中包含一些我应该实现的例程

#ifndef _TABLE_H
#define _TABLE_H

typedef enum BOOL { false, true } Boolean;

#endif //_TABLE_H
我在一个文件中使用这个接口,该文件定义了使用bool类型的各种例程(这次不是Boolean)


我希望能够同时使用这两种语言,如何做到这一点?

在您提供的代码中,您正在重新定义
BOOL
。因此,为了避免重新定义
BOOL
,在为
BOOL
提供定义时,请执行以下操作:

typedef enum BOOL bool;
所以你有以下几点:

文件1.h

文件2.h

#包括
...
typedef enum BOOL BOOL;
...
在这里,您将在
File1.h
中提供
BOOL
的定义。在
File2.h
中,您只是提供了一个别名。

注意:如果只在
File1.h
中提供减速,并将
BOOL
的定义放在另一个文件中,效果会更好

在您提供的代码中,您正在重新定义
BOOL
。因此,为了避免重新定义
BOOL
,在为
BOOL
提供定义时,请执行以下操作:

typedef enum BOOL bool;
所以你有以下几点:

文件1.h

文件2.h

#包括
...
typedef enum BOOL BOOL;
...
在这里,您将在
File1.h
中提供
BOOL
的定义。在
File2.h
中,您只是提供了一个别名。

注意:如果只在
File1.h
中提供减速,并将
BOOL
的定义放在另一个文件中,效果会更好

同时使用stdbool.h,不要重新定义轮子为什么要重新定义布尔?为什么不包含标题
#include
?这似乎更像是一个设计问题;您似乎有两种不同的类型,具有相同的语义。这不好。请将看到库符号的所有代码与符号分开。使用像
int
这样的稳定类型进行切换。不是最方便或最安全的类型。但至少不会出现重新定义错误。让我们假设您从未提到过
bool
或其变体。如何防止重复定义
枚举颜色{黑、蓝、绿、青、红、品红、黄、白}?然后在头中定义枚举类型,并使用头保护(不是以
\uu
和大写字母开头;这是为实现保留的),或者可能是
\pragma once
。就像你在问题中做的那样。并在代码需要颜色时包含标题。对这两种颜色都使用
stdbool.h
,不要重新定义轮子为什么要重新定义布尔?为什么不包含标题
#include
?这似乎更像是一个设计问题;您似乎有两种不同的类型,具有相同的语义。这不好。请将看到库符号的所有代码与符号分开。使用像
int
这样的稳定类型进行切换。不是最方便或最安全的类型。但至少不会出现重新定义错误。让我们假设您从未提到过
bool
或其变体。如何防止重复定义
枚举颜色{黑、蓝、绿、青、红、品红、黄、白}?然后在头中定义枚举类型,并使用头保护(不是以
\uu
和大写字母开头;这是为实现保留的),或者可能是
\pragma once
。就像你在问题中做的那样。并在代码需要颜色时包含标题。
#ifndef _TABLE_H
#define _TABLE_H

typedef enum BOOL { false, true } Boolean;

#endif //_TABLE_H
#include <File1.h>
...
typedef enum BOOL bool;
...