Этот вопрос только о причине выбора обозначения.
к предотвратить ошибки важно упомянуть размер переменной в битах, как
uint32_t VariableA; // uint32_t has been type defined for architecture whose int size is 32 bit.
int16_t VariableB;
вместо использования только спецификаторов типа, таких как
int VariableName;
Вопрос здесь в том, почему _t используется в uint32_t, а не только в uint32. Откуда взялась эта _t, которая была добавлена в typedef?
Имена были взяты из спецификации POSIX, которая широко использовалась до того, как C и C ++ стандартизировали имена целочисленных типов фиксированного размера. POSIX использует соглашение о добавлении _t
большинству имен типов.
_t
соглашение происходит с первых дней UNIX. Следуя примеру, большинство (или все) псевдонимы скалярных типов и многие struct
типы в Posix названы как таковые, а некоторые такие типы даже стандартизированы в самом C.
Кроме того, Posix оставляет за собой все имена с суффиксом _t
в глобальном пространстве имен C ++ (или вообще для C).
C ++ не вводит никаких новых _t
Насколько мне известно, использование стандартной библиотеки C ++ с использованием передового опыта только вводит имена в std
Пространство имен.
В некоторый момент в будущем ожидается / надеется, что Posix будет помещена в «песочницу» в posix
Пространство имен.
В любом случае, лучшая практика — сохранить весь ваш интерфейс typedef
в вашем собственном пространстве имен, и, как только вы это сделаете, присваиваете псевдонимы скалярным типам с помощью _t
вполне разумная политика. Преимущество состоит в том, что C ++ часто чувствителен к тому, относятся ли два имени к типам, которые действительно отличаются (но, возможно, ведут себя одинаково), или они действительно являются псевдонимами одного и того же. _t
очевидно, псевдоним чего-то простого.
_t
в основном обозначает type
название. Поэтому вам не рекомендуется заканчивать имена переменных или функций _t
так как это может вызвать некоторую путаницу и даже неопределенное поведение (в зависимости от компилятора и т. д.)
добавление
POSIX
системы определяют множество дополнительных имен типов, заканчивающихся на _t
и резервирует суффикс для реализации. Поэтому при работе в системах, связанных с POSIX, определение собственных имен типов с помощью соглашения не рекомендуется и может привести к неопределенному поведению.