2010-04-25 61 views
0

我設計的填充結構如下:iPhone/Objective-C的結構問題,我自己CGRectZero

/* Padding. */ 
struct CGPadding { 
CGFloat left; 
CGFloat top; 
CGFloat right; 
CGFloat bottom; 
}; 
typedef struct CGPadding CGPadding; 

CG_INLINE CGPadding CGPaddingMake(CGFloat left, CGFloat top, CGFloat right, CGFloat bottom) { CGPadding p; p.left = left; p.top = top; p.right = right; p.bottom = bottom; return p; } 

這一切都工作得很好,問題是如何創建一個const CGPadding CGPaddingZero?如果我這樣做:

const CGPadding CGPaddingZero = (CGPadding){0.0, 0.0, 0.0, 0.0}; 

它不工作。那麼我做錯了什麼?

+2

爲什麼不使用'UIEdgeInsets'? – kennytm 2010-04-25 15:57:29

+0

你是什麼意思的「它不工作」?編譯器錯誤?運行時錯誤?錯誤的價值在哪裏? – JeremyP 2010-04-25 19:42:33

回答

0

我覺得這很有趣,因爲我一直在iPhone上做它,它工作正常。可能與之後的typedef有相同的名稱?如果你擺脫了t​​ypedef並像這樣定義你的結構呢?

typedef struct CGPadding { 
CGFloat left; 
CGFloat top; 
CGFloat right; 
CGFloat bottom; 
} CGPadding; 

它是否工作呢?此外,由於全0是一個浮動零,以及和你零-ING出整個事情,你可以只說

const CGPadding CGPaddingZero = {0}; 

我做這個東西,所有iPhone上的時間,所以我會相當驚訝,如果它不適合你。

+0

它說重複符號_CGPaddingZero在blabla.o文件(...)失敗,退出代碼1 – Mark 2010-04-25 20:55:01