0


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

typedef enum
{
  MODULE0,
  MODULE1,
  MODULE2
}MODULE_TAG;

#define ALL_MODULE (MODULE_TAG-1)
4

2 回答 2

4

我认为定义可能有点不同:
#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;
}
于 2013-04-19T14:48:05.290 回答
1

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

于 2013-04-19T14:36:08.663 回答