typedef struct data_structure_name
{
} data_structure_name;
в принципе в моем случае все это может быть сделано и обычным struct, без typedef. А интенсивность использования этого патерна наводит на один вопрос: признавайтесь, кто еще помнит для чего такое нужно и какую проблему такой код решает?
а то в коде, который разгребаю, оно встречается и так, где обычный стракт никогда не создаст проблем. похоже что шаблон остался, а знания о нем пропали.
6 комментариев:
Вроде бы в C нельзя было иначе обьявлять структуры.
Не
typedef struct data_structure_name
{
} struct data_structure_name;
а
typedef struct data_structure_name
{
} data_structure_name;
Это позволяет потом в коде писать просто data_structure_name, а не struct data_structure_name.
2Andrew:
обьявление структуры без тайпдефа в С полностью валидно
2Rasta:
второй стракт это очепятку, точней результат невнимательного копипейста, сейчас исправлю.
но ведь ничто не мешает мне в коде обьявить структуру без тайпдефа, а потом при обьявлении переменной упускать слово стракт, так что тут есть нюанс :)
если доступ к полям структуры используется более чем в одном модуле, то без typedef никак.
с другой стороны даже внутри одного модуля объявление структуры как отдельного типа позволяет сделать более читаемый код, ИМХО.
не понял про доступ к полям структуры из разных модулей? какая тут разница есть тайпдеф или нету? выносим обьявление в хиадер, включаем его где нужно и все будет доступно
точно не помню, но ключевое слово struct надо было по-моему указывать перед именем структуры при вызове sizeof() для malloc например
Отправить комментарий