2012-03-01 44 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)