Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Различие в определении структуры, вопрос на засыпку 
V
    Опции темы
ManiaK
Дата 25.7.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Сразу, пока не забыл: речь идёт о языке Си!

В чём принципиальное различие:

Код

struct St
{
// bla-bla-bla
};

и
Код

typedef struct
{
// bla-bla-bla
} St;


Недавно обнаружил этот подводный камень, был удивлён smile
Скажет кто-нибудь ответ?.. 
PM MAIL WWW   Вверх
bel_nikita
Дата 25.7.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



если знаешь ответ на вопрос, тогда зачем задавать вопрос? 


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
ManiaK
Дата 25.7.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Цитата(bel_nikita @  25.7.2006,  12:32 Найти цитируемый пост)
если знаешь ответ на вопрос, тогда зачем задавать вопрос? 

Мне интересно, я один такой не знал или нет smile 
PM MAIL WWW   Вверх
Любитель
Дата 25.7.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Принципиальной - никакой. Вообще отличие только во внешнем виде и на этапе компиляции - генерируется промежуточный тип анонимной структуры. 


--------------------
PM MAIL ICQ Skype   Вверх
Romikgy
Дата 25.7.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Имхо во втором случае везде при объявлении переменных даной структуры не надо тянуть слово 
Цитата(ManiaK @  25.7.2006,  11:27 Найти цитируемый пост)
struct

в чистом Си 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ManiaK
Дата 25.7.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Цитата(Любитель @  25.7.2006,  12:49 Найти цитируемый пост)
Принципиальной - никакой.

Ура! Теперь я позларадничаю smile

Я не зря сказал, что речь идёт о Си! Потому как в Си++ действительно никакой разницы нет.

Но в Си не существует единой таблицы имён типов. Их как минимум две: таблица struct-типов и таблица {базовые типы + типы, образованные typedef'ами}. Когда мы пишем вот так:

Код

struct
{
} A;


То компилятор добавляет сгенерированное им самим имя struct-типа, но для нас, программистов, этот тип недоступен smile Это знают все опытные Сишники. Так?

Тогда кто вам сказал, что вот эта ситуация чем-то отличается от описанной строчкой выше:

Код

typedef struct
{
} A;


 smile 

При таком определении имя определённой структуры знает только компилятор, а вам же, программистам, доступен только синоним!!

Это кстати касается и Си++ по идее. Тогда в чём различие?..

Элементарно, Ватсон! smile В Си перед любым упоминанием имени структуры мы обязаны написать написать ключевое слово struct. В Си++ этого не требуется и все довольны smile

Кстати, наши "деды", делали вот такие финты с Си:

Код

struct MyStruct
{
// bla-bla
};

typedef struct MyStruct* MyStruct;

MyStruct oooops;// Нет, это не то, что вы подумали, это - указатель :)))


Я в шоке smile

Добавлено @ 13:02 
Romikgy, опередил smile  
PM MAIL WWW   Вверх
Любитель
Дата 25.7.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(ManiaK @  25.7.2006,  13:01 Найти цитируемый пост)
То компилятор добавляет сгенерированное им самим имя struct-типа, но для нас, программистов, этот тип недоступен  Это знают все опытные Сишники. Так?

Так. Это я и имел в виду, говоря о промежуточном типе.

Цитата(ManiaK @  25.7.2006,  13:01 Найти цитируемый пост)
В Си перед любым упоминанием имени структуры мы обязаны написать написать ключевое слово struct.

Да, а здесь свосем ступил.  smile Забываемс, забываемся...
 


--------------------
PM MAIL ICQ Skype   Вверх
bel_nikita
Дата 25.7.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



ManiaK, 
Может оформи красиво и вставь в факю smile  


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
ManiaK
Дата 25.7.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Цитата(bel_nikita @  25.7.2006,  13:28 Найти цитируемый пост)
Может оформи красиво и вставь в факю

Время будет - сделаю. 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.