2013-08-30 105 views
1

我正在學習結構和typedef定義中的結構。我理解正常的typedef定義,但在本例中一個typedef用於結構數據點爲什麼CGPoint聲明兩次?

struct CGPoint{ 
    CGFloat x; 
    CGFloat y; 
}; 

typedef struct CGPoint CGPoint; 

CGPoint rectPt; 

rectPt.x=2; 
rectPt.y=3; 

我不理解typedef結構CGPoint CGPoint; 爲什麼CGPoint列出兩次?

+1

這可能有助於回答你的問題:http://stackoverflow.com/questions/612328/difference-between-struct-and- typedef-struct-in-c這不是特定於Objective-C的東西,而是與struct關鍵字在C中的工作方式有關。 –

+0

這也是相關的:http://stackoverflow.com/questions/252780/why-應該-WE-的typedef-A-結構那麼經常在-C –

回答

2

,如果你不使用

typedef struct CGPoint CGPoint; 

你不能寫

CGPoint rectPt; 

而是你必須明確地寫

struct CGPoint rectPt; 

因爲在C定義struct沒有按不會自動定義類型名稱,因爲它發生在C++中

1

經過typedef您可以使用CGPoint而不是struct CGPoint

一種更簡單的方式來實現,這是對他們這樣的組合:

typedef struct CGPoint{ 
    CGFloat x; 
    CGFloat y; 
} CGPoint;