m0_56398359 2022-04-28 00:08 采纳率: 100%
浏览 16
已结题

枚举中是否可以使用宏控决定使用不同的枚举值

举例:
#define EXAMPLE A

enum
{
#if (EXAMPLE ==A)
a,
b,
#elif
c,
d
#endif
} exam;

这样编译时代码应该会报错,但不清楚原因

  • 写回答

1条回答 默认 最新

  • a5156520 2022-04-30 18:13
    关注

    可能是EXAMPLE宏的定义有点不对,又或者因为#if和#elif后面需要跟常量表达式有关,我用下面的测试代码,编译通过了,但不知道满足你要求不,因为加上下面注释的那行使用枚举的代码会编译失败,测试代码如下:

    #define EXAMPLE 'A'
    #include <stdio.h>
    
    #if EXAMPLE =='A'
    enum exam
    {
    a,
    b
    };
    #elif EXAMPLE =='B'
    enum exam 
    {
    c,
    d
    };
    #endif
    
    int main(void){
        if(EXAMPLE=='A'){
            printf("A");
        }else{
            printf("B");
        }
    
        //enum eaxm test;
        
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月9日
  • 已采纳回答 5月1日
  • 创建了问题 4月28日

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本