繁体   English   中英

使用typedef的C枚举类型的值

[英]the value of C enumeration type using typedef


您知道ALL_MODULE的结果吗?
您知道哪本书描述了这种情况吗?
非常感谢。 :)

typedef enum
{
  MODULE0,
  MODULE1,
  MODULE2
}MODULE_TAG;

#define ALL_MODULE (MODULE_TAG-1)

我认为定义可能有点不同:
#define ALL_MODULE ((MODULE_TAG)-1)

例如

#include <stdio.h>

typedef enum
{
  MODULE0 = 1,
  MODULE1 = 2,
  MODULE2 = 4
}MODULE_TAG;

#define ALL_MODULE ((MODULE_TAG)-1)

int main(){
    MODULE_TAG all = ALL_MODULE;
    MODULE_TAG amod = MODULE1;

    if(amod == MODULE1){
        printf("amod equal MODULE1\n"); 
    }
    if(amod != MODULE1){
        printf("amod not equal MODULE1\n"); 
    }

    if(all & MODULE0){
        printf("all has MODULE0\n");
    }
    if(all & MODULE1){
        printf("all has MODULE1\n");
    }
    if(all & MODULE2){
        printf("all has MODULE2\n");
    }
    return 0;
}

枚举typedef没有值。 在表达式中使用ALL_MODULE将导致编译错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM