2010-07-27 124 views
1

下面是我试图实现的一个例子。我试图创建一个宏,这将是这样的:可变参数函数的objective-c宏

SOMEMACRO(obj, obj, obj, ..., obj); 

宏将编译为:

some_function(obj, obj, obj, ..., obj, SOMETHING_ELSE, SOMETHING_ELSE); 

下面是一个1个参数功能的示例宏:

#define SOMEMACRO(x) some_function(x, SOMETHING_ELSE, SOMETHING_ELSE) 

但它只适用于一个参数(x)

所以基本上我需要同样的东西,但所以我可以通过可变数量的参数。编译器将(和)之间的任何内容都替换为X并将其简单地替换为X会很好。我不确定我是否很清楚这个问题,但我希望你能理解。

感谢您的任何帮助。

回答

1
#define SOMEMACRO(...) some_func(__VA_ARGS__, SOMETHING_ELSE, SOMETHING_ELSE); 
1

对不起,我放弃寻找过早,我猜。要回答我的问题:

的可变参数函数宏是这样的:

#define MACRONAME(...) some_function(__VA_ARGS__, SOMETHING_ELSE, SOMETHING_ELSE)