| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Различие в определении структуры |
| Автор: ManiaK 25.7.2006, 12:27 | ||||
| Сразу, пока не забыл: речь идёт о языке Си! В чём принципиальное различие:
и
Недавно обнаружил этот подводный камень, был удивлён Скажет кто-нибудь ответ?.. |
| Автор: bel_nikita 25.7.2006, 12:32 |
| если знаешь ответ на вопрос, тогда зачем задавать вопрос? |
| Автор: ManiaK 25.7.2006, 12:45 |
Мне интересно, я один такой не знал или нет |
| Автор: Любитель 25.7.2006, 12:49 |
| Принципиальной - никакой. Вообще отличие только во внешнем виде и на этапе компиляции - генерируется промежуточный тип анонимной структуры. |
| Автор: Romikgy 25.7.2006, 12:51 |
| Имхо во втором случае везде при объявлении переменных даной структуры не надо тянуть слово в чистом Си |
| Автор: ManiaK 25.7.2006, 13:01 | ||||||
Ура! Теперь я позларадничаю Я не зря сказал, что речь идёт о Си! Потому как в Си++ действительно никакой разницы нет. Но в Си не существует единой таблицы имён типов. Их как минимум две: таблица struct-типов и таблица {базовые типы + типы, образованные typedef'ами}. Когда мы пишем вот так:
То компилятор добавляет сгенерированное им самим имя struct-типа, но для нас, программистов, этот тип недоступен Тогда кто вам сказал, что вот эта ситуация чем-то отличается от описанной строчкой выше:
При таком определении имя определённой структуры знает только компилятор, а вам же, программистам, доступен только синоним!! Это кстати касается и Си++ по идее. Тогда в чём различие?.. Элементарно, Ватсон! Кстати, наши "деды", делали вот такие финты с Си:
Я в шоке Добавлено @ 13:02 Romikgy, опередил |
| Автор: bel_nikita 25.7.2006, 13:28 |
| ManiaK, Может оформи красиво и вставь в факю |
| Автор: ManiaK 25.7.2006, 13:32 |
Время будет - сделаю. |