2013-08-30 2 views
1

Я изучаю структуры внутри структур и определения typedef. Я понимаю обычные определения TYPEDEF, но в данном примере ЬурейиЙ используются для точек данных структурыПочему CGPoint объявляется дважды?

struct CGPoint{ 
    CGFloat x; 
    CGFloat y; 
}; 

typedef struct CGPoint CGPoint; 

CGPoint rectPt; 

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

Я не понимает ЬурейаЯ структуру 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- должны-мы-ЬурейеЕ-а-структура-так часто в-с –

ответ

2

, если вы не используете

typedef struct CGPoint CGPoint; 

вы не можете писать

CGPoint rectPt; 

, но вместо этого вы должны написать явно

struct CGPoint rectPt; 

, потому что в C, задающих struct Безразлично 't автоматически определяет имя для этого, как это происходит в C++

1

После typedef вы можете использовать CGPoint вместо struct CGPoint.

Более простой способ для достижения этой цели является объединить их так:

typedef struct CGPoint{ 
    CGFloat x; 
    CGFloat y; 
} CGPoint; 
Смежные вопросы