c语言,enum
在设置错误代号时,使用enum比宏更好看。
#include <stdio.h> typedef enum { retOK = 0, errComInterruption = 0x1000, errHexStr2Arry = 80, errFindCard = 82, }ENUM_ERROR_NUM; void f1(void) { printf("errHexStr2Arry = %d\n", errHexStr2Arry); int c = errHexStr2Arry; printf("c = %d\n", c); } int main() { f1(); return 0; }
enum最常用的用法就是作为“宏”的集合(如:错误代码集, 信息代码集。)
在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作, 此时enum是比#define更好的替代方式。
注意:同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的命名常量。
sizeof() 和enum:enum其实是人为定义的一种类型, 这种类型在内存里面(linux 32 bit system)是占了4个字节(和int一样大)。
enum变量的默认值: 一个enum变量如果不赋初值(貌似这种使用方式不多),不管enum里面是怎么定义的,默认值都是0, see below example day_ev。
#include <stdio.h> typedef enum escapes { BELL = '\a', BACKSPACE = '\b', HTAB = '\t', RETURN = '\r', NEWLINE = '\n', VTAB = '\v', SPACE = ' ' }ESCAPES; enum day { MON = 1, TUE =2 } day_ev; void main() { printf("sizeof(0) = %d bytes \n", sizeof(0)); //4 printf("sizeof(ESCAPES) = %d bytes \n", sizeof(ESCAPES)); //4 //printf("%d bytes \n", sizeof(escapes)); // error: ‘escapes’ undeclared
printf("sizeof(enum escapes) = %d bytes \n", sizeof(enum escapes)); // 4
printf("sizeof(SPACE) = %d bytes \n", sizeof(SPACE)); //4 printf("sizeof(day_ev) = %d bytes \n", sizeof(day_ev)); //4 printf("day_ev= %d\n" , day_ev);// default value = 0 }