typedef и struct в Windows
От: Fylhe Россия  
Дата: 06.11.04 19:48
Оценка:
Непонятки с использованием typedef и struct в Windows:
typedef struct tagNMHDR
{
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;

Что здесь tagNMHDR и NMHDR? Синонимы одного и того же типа – структуры? Но зачем тогда их нужно двое?

Не пинайте сильно, легко сказать «в любой книге есть», а у меня на этот вопрос уже полгода ответа стопудового не находится
Re: typedef и struct в Windows
От: jedi Мухосранск  
Дата: 06.11.04 19:59
Оценка:
Здравствуйте, 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>>
Re: typedef и struct в Windows
От: adontz Грузия http://adontz.wordpress.com/
Дата: 06.11.04 20:09
Оценка:
Здравствуйте, Fylhe, Вы писали:

К уже сказанному могу добавить, что во встроннном ассемблере VC можно использовать только tagNMHDR, но не NMHDR. Чем это вызванно не знаю.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: typedef и struct в Windows
От: Fylhe Россия  
Дата: 09.11.04 20:10
Оценка:
Спасибо jedi и adontz! Все понятно, спасибо за объяснение!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.