dav*_*ode 2 macros xcode objective-c c-preprocessor
我正在尝试使用varargs创建一个简单的宏,但我得到"va_start在固定args的函数中使用",我不明白为什么以及我错在哪里.代码如下:
#define FOO(obj, ...) \
va_list args; \
va_start(args, obj); \
NSString *currentObject; \
while ((currentObject = va_arg(args, NSString*)) != nil) { \
NSLog(@"string: %@", currentObject); \
} \
va_end(args);
Run Code Online (Sandbox Code Playgroud)
该va_list类型及其相关操作是可变参数的功能.它们不适用于可变参数宏,它使用__VA_ARGS__和工作方式有些不同.
在这个例子中,我看不出任何使用宏的理由; 你应该只使用一个函数.如果事实证明你确实需要一个宏,你可能最终必须__VA_ARGS__作为参数传递给一个可变参数函数,然后可以解压缩参数并执行进一步的工作.
| 归档时间: |
|
| 查看次数: |
2946 次 |
| 最近记录: |