Это означает, что int16_t
определяется как short
на вашей машине, а не на всех машинах.
Просто используйте int16_t
, где вам абсолютно необходим 16-битный целочисленный тип; он будет определен соответствующим образом на всех платформах, которые предоставляют stdint.h
(что должно быть всем, что поддерживает C99, или cstdint
для C ++).
[Edit] Для пояснения, файл заголовка "stdint.h
" предоставляется компилятором C (или C ++), поэтому его содержимое, вероятно, будет различаться в зависимости от компилятора, версии, системы, архитектуры ЦП, и т. д. То есть авторы пакета компилятора точно знают, какие типы имеют размеры и на каких системах. Глядя на этот файл только в одной системе, вы узнаете только об определениях для конкретной версии конкретного компилятора в конкретной ОС на конкретной архитектуре (например, GCC 4.2 на Darwin x86_64, Visual Studio на WinNT Alpha или ICC на Solaris IA32 , так далее). Некоторые системы, особенно встроенные, могут иметь разные размеры шрифта, поэтому short
не всегда может быть 16-битным, и компилятор будет знать правильный размер для использования для этой длины в битах.
Если вы посмотрите на файл stdint.h
в другой системе, определения могут отличаться или они могут быть одинаковыми - но его цель - предоставить определения для целочисленных типов гарантированных битовых длин.