2012-03-01 42 views
1
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"); 
} 
+1

有什么问题? – 2012-03-01 10:50:59

+1

没有汤给你! – synthesizerpatel 2012-03-01 11:05:47

+0

如果任何答案回答了您的问题,请按“旁边的”v“接受”。 – 2012-03-01 13:45:34

回答

3

的定义(如果你真的把它写这样的)必须使用相同的名称错误为ARGS

应该

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

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

您需要:

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

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

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