是否可以定义一个宏,这样我也可以定义一个参数变量?我想在objective-c中为范围编写速记枚举,以便我有类似以下的内容:
#define NSRangeEnumerate(i, range) for(i = range.location; i < NSMaxRange(range); ++i)
但是,在调用此宏时,显然我收到错误,因为在调用宏之前未定义i
。
NSRangeEnumerate(i, range) {}
引发错误,因为我需要这样做:
NSUInteger i;
NSRangeEnumerate(i, range) {}
我希望能够做到的事情,例如典型的for
声明如下:
NSRangeEnumerate(NSUInteger i, range) {}
我怎么可能这样做,因为如果我在宏中定义i
,我会发现它被定义了两次,因为宏是如何编写的。我希望它初始化一次,然后引用接下来的两次。我希望我的目标有道理......任何帮助都会得到真正的赞赏。
修改
我目前的解决方案虽然不是首选,但是:
#define NSRangeEnumerate(type, i, range) for(type i = range.location; i < NSMaxRange(range); ++i)
答案 0 :(得分:1)
#define NSRangeEnumerate(type, i, range) for(type i = range.location; i < NSMaxRange(range); ++i)
或
#define NSRangeEnumerate(i, range) for(NSUInteger i = range.location; i < NSMaxRange(range); ++i)