将变量定义为宏参数

时间:2014-08-25 13:47:17

标签: objective-c for-loop enumeration nsrange

是否可以定义一个宏,这样我也可以定义一个参数变量?我想在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)

1 个答案:

答案 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)
相关问题