2013-03-13 44 views
0

创建函数或宏我有结构的设置结构

struct CounterRange { 
    NSInteger min; 
    NSInteger max; 
}; 

我要为结构设置PARAMS像NSMakeRange:

NSMakeRange(unsigned int loc, unsigned int len) 

,使代码线看起来像下面

obj.counterRange = MakeCounterRange(10, 20); 

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

回答

1

我只是使用一个函数。如果你愿意,你可以将它内联。你可以修改NSRange.h中NSMakeRange的定义:

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

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

+0

是的,谢谢,我刚刚看到它是如何组织和创建我自己的内联宏。 – 2013-03-13 16:44:09

+0

NS_INLINE CounterRange MakeCounterRange(NSUInteger min,NSUInteger max)我已经像这样创建了它。可以吗? – 2013-03-13 16:45:32

1

简单:

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

注意:宏通常使事情更容易,允许使用更少的字符来实现的东西。这不是这种情况,所以我甚至不打算使用它。