Непонятки с использованием typedef и struct в Windows:
typedef struct tagNMHDR
{
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;
Что здесь tagNMHDR и NMHDR? Синонимы одного и того же типа – структуры? Но зачем тогда их нужно двое?
Не пинайте сильно, легко сказать «в любой книге есть», а у меня на этот вопрос уже полгода ответа стопудового не находится
Здравствуйте, Fylhe, Вы писали:
F>Непонятки с использованием typedef и struct в Windows:
F>typedef struct tagNMHDR
F>{
F>HWND hwndFrom;
F>UINT idFrom;
F>UINT code;
F>} NMHDR;
F>Что здесь tagNMHDR и NMHDR? Синонимы одного и того же типа – структуры? Но зачем тогда их нужно двое?
Ну, Windows, здесь непричем

Это особенности языка С.
Эта запись эквивалентна следующим двум.
struct tagNMHDR
{
HWND hwndFrom;
UINT idFrom;
UINT code;
};
typedef struct tagNMHDR NMHDR;
Дело в том, что в языке С tagNMHDR не является именем типа. Например
следующее объявление переменной неверно:
tagNMHDR hdr;
Вместо этого нужно писать:
struct tagNMHDR hdr;
typedef делает возможной первую (более короткую) форму записи.
Заметьте что в С++ обе формы записи эквивалентны.
Надеюсь объяснил более-менее понятно
Best regards, jedi.
... << RSDN@Home 1.1.4 beta 3 rev. 219>>