Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/42: Рейтинг темы: голосов - 42, средняя оценка - 4.93
Lilim
7 / 7 / 0
Регистрация: 24.12.2011
Сообщений: 53
1

Для чего typedef struct

28.07.2013, 18:06. Просмотров 8100. Ответов 6
Метки нет (Все метки)

Часто в "профессиональном" коде вижу -
C++
1
2
3
typedef struct MyStruct {
// ...
} MyStuct;
даёт ли это какие то преимущества перед простым объявлением -
C++
1
2
3
struct MyStruct {
// ...
};
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 18:06
Ответы с готовыми решениями:

Для чего используют typedef?
Здравствуйте программисты! Набрёл на тему,там используется какой-то typedef,...

typedef struct
Ребята, нужна помощь. Первый раз использую typedef struct. Вроде бы всё...

typedef struct ....
Здравствуейте. Обьясните пожалуйсто новичку что означает этот код. typedef...

typedef struct
а зачем вы используете конструкцию typedef struct name{...} ? и какие она дает...

typedef struct + TXT
Такое вот задание.. есть TXT файл, пропарсить смогу сам, а дальше не знаю что...

6
Evg
Эксперт CАвтор FAQ
19305 / 7160 / 533
Регистрация: 30.03.2009
Сообщений: 20,038
Записей в блоге: 30
28.07.2013, 18:16 2
Лучший ответ Сообщение было отмечено как решение

Решение

Принципиальных преимуществ кроме того, чтобы писать меньше букв, не даёт. Во втором случае в языке Си у тебя НЕ вводится новый идентификатор в область видимости, хотя сложно это назвать преимуществом. Первый вариант, в основном, нужен в тех случаях, когда внутри структуры описывается поле, которое есть указатель на эту же самую структуру (например, указатель next при реализации списка). По другому его создать не получится

Указатель на структуру - что напечатает программа
странное употребления к-го слова typedef
5
Fintt
10 / 10 / 2
Регистрация: 13.02.2012
Сообщений: 94
28.07.2013, 18:23 3
Например
C++
1
2
struct MyStruct {};
typedef MyStruct *My;
Если работаешь со списком так удобнее и вообще рекомендуется объявлять пользовательский тип как указатель на MyStruct. Если не ошибаюсь.
0
Evg
Эксперт CАвтор FAQ
19305 / 7160 / 533
Регистрация: 30.03.2009
Сообщений: 20,038
Записей в блоге: 30
28.07.2013, 18:29 4
Fintt, я вообще-то говорил о том, чтобы объявить указатель ВНУТРИ описания тела структуры, а не снаружи, как у тебя
0
Fintt
10 / 10 / 2
Регистрация: 13.02.2012
Сообщений: 94
28.07.2013, 18:31 5
Я теперь понял что это всё с С, я сообщение раньше начал писать просто вот и не увидел сразу.
1
Evg
Эксперт CАвтор FAQ
19305 / 7160 / 533
Регистрация: 30.03.2009
Сообщений: 20,038
Записей в блоге: 30
28.07.2013, 18:41 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'а на указатель скорее приводит к бардаку и снижению читабельности кода, чем к порядку
0
Epsilion
4 / 4 / 0
Регистрация: 01.03.2017
Сообщений: 12
08.08.2017, 12:07 7
Вставлю свои 5 копеек.
Тоже недавно столкнулся с данным вопросом. После гугления нагуглилась данная тема.
А ещё одна на геймдеве [cut] и там так же сказано, что...
typedef struct так же используется для определения альясов
C++
1
2
3
4
typedef struct _base_chunk
{
  udword base, size;
}MY_MEGA_MODEL_CHUNK, HDD_TREE_CHUNK и т.п.
Используется для логической разметки структуры кода. Типа, если надо определить несколько структур одинаковой структуры, но логически разного назначения. Иначе, пришлось бы либо объявлять все переменные для одной структуры, либо юзать наследование для каждой структуры, либо объявлять все структуры копипастя код первой что приведёт к дублированию строк.

Добавлено через 3 минуты
Кстати, подобный подход используется в заголовочных файлах DirectX SDK. Собстна изучение этих файлов и послужило толчком к гугление сабжа.
2
08.08.2017, 12:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2017, 12:07

Волшебные вещи с typedef struct
у меня сейчас мозг взорвется не пойму в чем ошибка,где я не так делаю? ...

Программа через структуру typedef struct
Люди помогите если несложно с программой, задание таково: 1.С клавиатуры...

Typedef void F(); typedef для типа функции через идентификатор
Здравствуйте цитата из typedef MSDN в интернете мне удалось нарыть только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru