Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > зачем пишут лишний typedef?


Автор: agu 11.5.2010, 17:28
добрый день!
вопрос:
в конструкциях типа
Код
typedef struct _ST {
   char a;
   int b;
} ST;
зачем пишут _ST и typedef?
почему не написать просто
Код
struct ST {
   char a;
   int b;
};
?

Автор: djamshud 11.5.2010, 17:39
Чтобы в си во время объявления переменных и некоторых других ситуациях писать вместро struct ST просто ST. В плюсах пишут по привычке или для совместимости с си. Сам предпочитаю совместимость с си обеспечивать напротив насильным написании struct перед именем типа структуры.

си:
Код

struct ST{};
struct ST ST_var;//win
ST ST_var2;//fail


Код

typedef struct ST{};
struct ST_var;//win
ST ST_var2;//win

Автор: Abyx 11.5.2010, 17:47
typedef не совместим с шаблонами.
в общем случае, в С++ через typedef определить структуру нельзя.

Автор: djamshud 11.5.2010, 17:55
В си-совместимом хедере шаблоны пользуются просто неиибической популярностью, ага.

Автор: Abyx 11.5.2010, 18:00
djamshud, 
1) удали завуалированный мат из своего поста
2) здесь не говорили про си-совместимый хедер, говорили про typedef вообще.
но С-совместимый хедер нужен только компилятору Си, я например таких никогда даже не видел, зачем они вообще, если есть С++ ?

Автор: djamshud 11.5.2010, 18:08
Abyx, сорри. Я подумал, что сей лаконичный ответ мне:).

>зачем они вообще, если есть С++ ?

На си пишут не меньше, а поддерживают намного больше кода, чем на с++;). Не будем холиворить на эту тему.

Автор: agu 11.5.2010, 19:01
господа, всем большое спасибо, вопрос прояснен.  smile 

Автор: bsa 11.5.2010, 22:45

M
bsa
agu, если ответ на вопрос получен, то пометь тему решенной

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)