0

我有结构

struct CounterRange {
    NSInteger min;
    NSInteger max;
};

我想为 NSMakeRange 中的结构设置参数:

NSMakeRange(unsigned int loc, unsigned int len)

所以代码行将如下所示

obj.counterRange = MakeCounterRange(10, 20);

正如我认为的那样,例如 MakeCounterRange 将是一个将为我设置结构的宏。但我从来没有做过同样的事情,我只能假设它是如何工作的。

4

2 回答 2

1

我只会使用一个函数。如果你愿意,你可以让它内联。您可以从 NSRange.h 调整 NSMakeRange 的定义:

NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
    NSRange r;
    r.location = loc;
    r.length = len;
    return r;
}

您的结构看起来很像 NSRange。你为什么不直接使用它?

于 2013-03-13T16:41:24.633 回答
1

简单地:

#define MakeCounterRange(a, b) { a, b }

注意:宏通常使事情变得更容易,允许用更少的字符来实现。这里不是这种情况,所以我什至不会费心使用它。

于 2013-03-13T16:43:16.263 回答