定义用于多个文件的枚举数据类型

时间:2015-03-03 10:30:44

标签: c types enums

我有几个文件 main.c,main.h,some_funcs.c和some_funcs.h。

main.h is included in main.c
main.h include some_funcs.h
some_funcs.c include some_funcs.h

当我现在定义一个新的数据类型时:

//Datatypes
enum _bool {
   false = 0,
   true = 1
};

typedef enum _bool Bool;

如果我在例如main.h并希望在some_func.c中使用它,它不起作用。有没有办法在某处定义它而不总是包含定义它的标题?

3 个答案:

答案 0 :(得分:3)

将定义放在some_funcs.h中。这将使它在main.h,main.c,some_funcs.h和some_funcs.c中可见。

更通用的解决方案是将常用数据类型放入名为common.h的文件中。

然后,您将此文件包含在所有头文件中。

这将是common.h文件的内容。 ifdef将忽略文件的内容(如果已包含该文件)。

#ifndef COMMON_H
#define COMMON_H

//Datatypes
enum _bool {
   false = 0,
   true = 1
};

typedef enum _bool Bool;

#endif

答案 1 :(得分:1)

  

有没有办法在某处定义它而不总是包含定义它的标题?

NO。

您必须在每个源文件中包含标头。

通常的做法是拥有自己的typdef.h。在其中定义您自己的数据类型,并将其包含在您感兴趣的源文件中。

答案 2 :(得分:1)

  

有没有办法在某处定义它而不总是包含   标题在哪里定义?

听起来我可以使用类型的定义而不定义它。:)

您应该包含头文件,其中枚举和typedef在每个使用它的模块中定义。

考虑到C中有1)类型_Bool和2)标准标题<stdbool.h>,其中宏boolfalsetrue是已定义。