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 }

 

posted @ 2015-07-22 15:34  oucaijun  阅读(398)  评论(0编辑  收藏  举报
下载TeamViewer完整版 下载TeamViewer