Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / В чем отличие typedef struct T1 и struct T2? / 3 сообщений из 3, страница 1 из 1
27.01.2014, 16:14
    #38539266
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие typedef struct T1 и struct T2?
В чем отличие определения типов T1 и T2 и в каком случае какой из них предпочтителен?
Код: plaintext
1.
2.
3.
typedef struct { int a, b, c; } T1;

struct T2 { int a, b, c; };
...
Рейтинг: 0 / 0
27.01.2014, 17:19
    #38539419
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие typedef struct T1 и struct T2?
Вася Уткин,

Различие есть только в языке C.
В С определение или объявление структуры не вводит новый тип данных.
Код: plaintext
1.
2.
3.
4.
struct T2 { int a, b, c; }; // T2 является именем структуры, но типа данных T2 нет.

T2 t2_inst; // так писать нельзя.
struct T2 t2_inst_2; // нужно писать так.



И соответственно, чтобы можно было писать объявление переменной без ключевого слова struct, нужно написать что-то типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
struct T2 { int a, b, c; }; 
typedef struct T2 T1;

T2 t2_inst; // так писать нельзя всё равно
T1 t2_inst; // так писать теперь можно
struct T2 t2_inst_2; // так писать тоже можно.




Часто в коде на С пишут так:
Код: plaintext
1.
2.
3.
4.
typedef struct T2_tag { int a, b, c; } T2;

T2 t2_inst;                 // так писать можно.
struct T2_tag t2_inst_2; // так писать тоже можно.



В C++ различий нет, так что писать typedef для структуры не нужно, но пишут, поскольку названия структуры и типа структуры в коде на С разные, поэтому в С++ это тоже нужно.
...
Рейтинг: 0 / 0
27.01.2014, 18:25
    #38539561
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие typedef struct T1 и struct T2?
Понятно, в C нужно, а в C++ только для совместимости с C.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / В чем отличие typedef struct T1 и struct T2? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]