Форум программистов, компьютерный форум CyberForum.ru

Для чего typedef struct - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.66
Lilim
 Аватар для Lilim
6 / 6 / 0
Регистрация: 24.12.2011
Сообщений: 53
28.07.2013, 18:06     Для чего typedef struct #1
Часто в "профессиональном" коде вижу -
C++
1
2
3
typedef struct MyStruct {
// ...
} MyStuct;
даёт ли это какие то преимущества перед простым объявлением -
C++
1
2
3
struct MyStruct {
// ...
};
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 18:06     Для чего typedef struct
Посмотрите здесь:

Для чего используют typedef? C++
C++ typedef struct
typedef struct C++
C++ Программа через структуру typedef struct
C++ typedef struct ....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16832 / 5253 / 322
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
28.07.2013, 18:16     Для чего typedef struct #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Принципиальных преимуществ кроме того, чтобы писать меньше букв, не даёт. Во втором случае в языке Си у тебя НЕ вводится новый идентификатор в область видимости, хотя сложно это назвать преимуществом. Первый вариант, в основном, нужен в тех случаях, когда внутри структуры описывается поле, которое есть указатель на эту же самую структуру (например, указатель next при реализации списка). По другому его создать не получится

Указатель на структуру - что напечатает программа
странное употребления к-го слова typedef
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
28.07.2013, 18:23     Для чего typedef struct #3
Например
C++
1
2
struct MyStruct {};
typedef MyStruct *My;
Если работаешь со списком так удобнее и вообще рекомендуется объявлять пользовательский тип как указатель на MyStruct. Если не ошибаюсь.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16832 / 5253 / 322
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
28.07.2013, 18:29     Для чего typedef struct #4
Fintt, я вообще-то говорил о том, чтобы объявить указатель ВНУТРИ описания тела структуры, а не снаружи, как у тебя
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
28.07.2013, 18:31     Для чего typedef struct #5
Я теперь понял что это всё с С, я сообщение раньше начал писать просто вот и не увидел сразу.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16832 / 5253 / 322
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
28.07.2013, 18:41     Для чего typedef struct #6
По поводу заведения typedef'а для указателя на структуру. На мой взгляд это тоже не очень удобно. Потому что в этом случае невозможно будет задавать указатель на const. Т.е. вот так можно

C
typedef struct {
  ...
} struct_t;
 
struct_t *ptr1;
const struct_t *ptr2;
а вот так нельзя (в смысле можно, но получим совсем не то, что хотели):

C
typedef struct {
  ...
} struct_t;
 
typedef struct_t * struct_ptr_t;
 
struct_ptr_t ptr1;
const struct_ptr_t ptr2;
а чтобы получить то, что хотели, то надо писать:

C
typedef struct {
  ...
} struct_t;
 
typedef struct_t * struct_ptr_t;
typedef const struct_t * struct_const_ptr_t;
 
struct_ptr_t ptr1;
struct_const_ptr_t ptr2;
Лично моё мнение - заведение отдельного typedef'а на указатель скорее приводит к бардаку и снижению читабельности кода, чем к порядку
Yandex
Объявления
28.07.2013, 18:41     Для чего typedef struct
Ответ Создать тему
Опции темы

Текущее время: 01:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru