uint32_t, int_t нотация для представления размера переменной

Этот вопрос только о причине выбора обозначения.

к предотвратить ошибки важно упомянуть размер переменной в битах, как

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?

2

Решение

Имена были взяты из спецификации POSIX, которая широко использовалась до того, как C и C ++ стандартизировали имена целочисленных типов фиксированного размера. POSIX использует соглашение о добавлении _t большинству имен типов.

2

Другие решения

_t соглашение происходит с первых дней UNIX. Следуя примеру, большинство (или все) псевдонимы скалярных типов и многие struct типы в Posix названы как таковые, а некоторые такие типы даже стандартизированы в самом C.

Кроме того, Posix оставляет за собой все имена с суффиксом _t в глобальном пространстве имен C ++ (или вообще для C).

C ++ не вводит никаких новых _t Насколько мне известно, использование стандартной библиотеки C ++ с использованием передового опыта только вводит имена в std Пространство имен.

В некоторый момент в будущем ожидается / надеется, что Posix будет помещена в «песочницу» в posix Пространство имен.

В любом случае, лучшая практика — сохранить весь ваш интерфейс typedefв вашем собственном пространстве имен, и, как только вы это сделаете, присваиваете псевдонимы скалярным типам с помощью _t вполне разумная политика. Преимущество состоит в том, что C ++ часто чувствителен к тому, относятся ли два имени к типам, которые действительно отличаются (но, возможно, ведут себя одинаково), или они действительно являются псевдонимами одного и того же. _t очевидно, псевдоним чего-то простого.

1

_t в основном обозначает type название. Поэтому вам не рекомендуется заканчивать имена переменных или функций _t так как это может вызвать некоторую путаницу и даже неопределенное поведение (в зависимости от компилятора и т. д.)

добавление

POSIX системы определяют множество дополнительных имен типов, заканчивающихся на _tи резервирует суффикс для реализации. Поэтому при работе в системах, связанных с POSIX, определение собственных имен типов с помощью соглашения не рекомендуется и может привести к неопределенному поведению.

0
По вопросам рекламы [email protected]