2013-03-13 81 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 } 

注意:宏通常使事情更容易,允許使用更少的字符來實現的東西。這不是這種情況,所以我甚至不打算使用它。