Интересует вопрос, почему многие разработчики стали использовать в названии различных enum и struct "_t", например status_t, error_t, direction_t, buffer_t.
Может где-то есть позновательная статья на эту тему?
Мое использование ограничивалось size_t, int32_t, wchar_t...
Я еще понимаю, когда пишешь библиотеку и там размеры типов "плавают", но когда конечное приложение...
Здравствуйте, LeonCrew, Вы писали:
LC>Интересует вопрос, почему многие разработчики стали использовать в названии различных enum и struct "_t", например status_t, error_t, direction_t, buffer_t.
LC>Может где-то есть позновательная статья на эту тему? LC>Мое использование ограничивалось size_t, int32_t, wchar_t... LC>Я еще понимаю, когда пишешь библиотеку и там размеры типов "плавают", но когда конечное приложение...
Видимо, просто сишная naming convention.
В Си по стандарту символический идентификатор после struct, union и enum называется tag.
Наверное, это чтобы отличать имя типа от имени чего-то другого. Например, переменной или функции. В суффиксе _t ничего связанного с размером не вижу. 8 — )
Здравствуйте, LeonCrew, Вы писали:
LC>Интересует вопрос, почему многие разработчики стали использовать в названии различных enum и struct "_t", например status_t, error_t, direction_t, buffer_t.
LC>Может где-то есть позновательная статья на эту тему? LC>Мое использование ограничивалось size_t, int32_t, wchar_t... LC>Я еще понимаю, когда пишешь библиотеку и там размеры типов "плавают", но когда конечное приложение...
Суффикс _t использовался для подчеркивания того факта, что это не самодостаточный тип, а алиас типа определенного с помощью typedef.
Здравствуйте, LeonCrew, Вы писали:
LC>Интересует вопрос, почему многие разработчики стали использовать в названии различных enum и struct "_t", например status_t, error_t, direction_t, buffer_t.
По-моему в стандарте суффикс _t используют тогда, когда велика вероятность коллизий. Немаловероятно, что типы wchar или int32 кто-то определил в своей программе еще до того, когда они стали стандартными, поэтому стандартными стали wchar_t и int32_t. По этой причине лучше не использовать суффикс _t в своих программах, поскольку типы с таким суффиксом могут стать стандартными в будущем.
Здравствуйте, LeonCrew, Вы писали:
LC>Интересует вопрос, почему многие разработчики стали использовать в названии различных enum и struct "_t", например status_t, error_t, direction_t, buffer_t.
_t значит "тип".
Такое соглашение очень помогает разобраться в хитром (шаблонном) коде, в котором иногда непонятно, где тип, а где переменная.
LC>Может где-то есть позновательная статья на эту тему?
Позновательная — от слова "зноние?
Конкретно по суффиксу "_t", наверное, ничего особо познавательного нет (хотя легкое гугление по ключевым словам "suffix _t" дает много интересного).
Рекомендую искать зноние в различных статьях о пользе единого Coding Style (coding guidelines for team depelopment, etc).
LC>Мое использование ограничивалось size_t, int32_t, wchar_t... LC>Я еще понимаю, когда пишешь библиотеку и там размеры типов "плавают", но когда конечное приложение...
Когда конечное приложение разрабатывается командой, и в команде активно вводятся свои классы, тайпдефы и енумы, любое соглашение, позволяющее легко отличить в коде тип от переменной, принесет большую пользу.
Суффикс _t популярен потому, что удобен и уже практически стал стандартным из-за использования в стандартной библиотеке.
Здравствуйте, igna, Вы писали:
I>По-моему в стандарте суффикс _t используют тогда, когда велика вероятность коллизий. Немаловероятно, что типы wchar или int32 кто-то определил в своей программе еще до того, когда они стали стандартными, поэтому стандартными стали wchar_t и int32_t. По этой причине лучше не использовать суффикс _t в своих программах, поскольку типы с таким суффиксом могут стать стандартными в будущем.
Для избавления от коллизий в С++ используются неймспейсы, поэтому в проектах на С++ этот суффикс используется весьма активно и без опасений (из тех, с которыми пришлось возиться — чуть ли не во всех).
В С — да, можно огрести проблем в будущем, если ввести какой-нибудь свой number_t.