Enum如何在C上分配内存?

时间:2012-09-04 15:41:48

标签: c assembly enums

我正在尝试使用C和Assembly(intelx8086)语言。

我也在使用一个班级,我的一个朋友给了我一个

typedef enum data_10 {a=0,b=7,c=10,} data_10_type;

我想按比例使用这个类(AKA构造它/在Assembly上销毁它)。我的问题是,“枚举”需要多少记忆?

3 个答案:

答案 0 :(得分:6)

尽管编译器可能因编译器而异,但enum通常与int的大小相同。但是,您必须始终使用sizeof( data_10_type );

答案 1 :(得分:2)

你为什么不打印它?

/* C99 */
#include <stdio.h>

typedef enum { a = 0, b = 7, c = 10 } data_10_type;
printf("%zu\n", sizeof(data_10_type));

枚举器列表中的标识符声明为类型为int的常量(C11§6.7.2.2枚举说明符),因此sizeof(data_10_type)通常等于{{ 1}},但没有必要!

BTW,如果你想要一个比特大小,只需使用sizeof(int)常量(在CHAR_BIT中定义),它表示单个字节中有多少位。)

<limits.h>

答案 2 :(得分:1)

枚举根本不会占用任何记忆;编译器可以理解它,并且在编译期间使用正确的数字。它是一个int,其大小取决于您的系统。