#cpp #c
В чем разница между typedef struct LINE { .... }; и struct LINE { ... };
Ответы
Ответ 1
В Вашем примере разницы нет никакой, typedef просто игнорируется. Если же переписать этот код немного: typedef struct LINE { } alias; То объект структуры можно будет создавать как с помощью LINE так и alias, т.к. typedef создаёт псевдонимы типов.Ответ 2
typedef используется для создания псевдонимов других типов данных. Приведенный пример лучше скорректировать, например: typedef struct LINE { ... } t_line; typedef может использоваться не только для структур, но и для любых других типов: typedef int t_message_id; typedef enum e_Colour {...} t_colour; Основные причины использования typedef-объявлений Сокращение имен типов данных для улучшения читабельности и простоты набора кода. В приведенном примере без использования typedef придется писать struct LINE. В C++ эта проблема решена (можно просто писать LINE), однако могут использоваться длинные названия типов, например: std::vector::size_type может быть сокращено с помощью typedef ... t_lvecsz. Абстрагирование от используемого в данной реализации типа данных для облегчения возможных изменений реализации. Например, struct LINE может быть объявлено так: struct LINE { float x1,y1,x2,y2; }; и во всем остальном коде для представления координат использоваться тип float. При возникновении необходимости перехода, например, к типу double потребуется вносить множество изменений в код (и, как всегда, где-то забыть внести изменения). Эта проблема хорошо решается с помощью следующих объявлений: typedef float t_coord; struct LINE { t_coord x1,y1,x2,y2; }; Также typedef может использоваться для облегчения создания объявлений сложных типов (что-то вроде "массив указателей на функции, возвращающие указатель на структуру и т.д.").
Комментариев нет:
Отправить комментарий