我想在宏中使用枚举

时间:2012-03-01 10:49:15

标签: c

enum ArgPos

{
P1 = 1,
P2 = 2,
P3 = 3
};

void fun(int, int, int);

#define FUN(ArgPos, ArgPos, ArgPos) fun(ArgPos, ArgPos, ArgPos)

int main(void)

{

FUN(P1, P2, P3);
return 0;
}

void fun(int a, int b, int c)
{
 printf("fun");
}

3 个答案:

答案 0 :(得分:3)

define(如果你真的这样写的话)使用args

的同名错误

应该是

#define FUN(ArgPos1, ArgPos2, ArgPos3) fun(ArgPos1, ArgPos2, ArgPos3)

答案 1 :(得分:2)

您将enum和宏参数命名为相同。

你需要:

#define FUN(x,y,z) fun(x,y,z)

答案 2 :(得分:2)

问题不在于枚举,而在于您的宏:

#define FUN(x,y,z) fun(x,y,z)