举例:
#define EXAMPLE A
enum
{
#if (EXAMPLE ==A)
a,
b,
#elif
c,
d
#endif
} exam;
这样编译时代码应该会报错,但不清楚原因
举例:
#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;
}