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

举例:
#define EXAMPLE A

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

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

可能是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;
}