Типы, такие как uint32, int32, uint64, int64, определены в любом заголовке stdlib? - PullRequest
86 голосов
/ 16 мая 2011

Я часто вижу исходный код с использованием типов, таких как uint32, uint64, и мне интересно, должны ли они быть определены программистом в коде приложения или они определены в стандартном заголовке lib.

Как лучше всего использовать эти типы в исходном коде моего приложения?

Ответы [ 4 ]

122 голосов
/ 16 мая 2011

C99 stdint.h определяет их:

  • int8_t
  • int16_t
  • int32_t
  • uint8_t
  • uint16_t
  • uint32_t

И, если архитектура поддерживает их:

  • int64_t
  • uint64_t

В stdint.h также есть различные другие целочисленные определения типа.

Если вы застряли без среды C99, тогдавам, вероятно, следует предоставить свои собственные определения типов и в любом случае использовать C99.

uint32 и uint64 (т.е. без суффикса _t), вероятно, зависят от приложения.

10 голосов
/ 16 мая 2011

Все эти целые типы определены в stdint.h

2 голосов
/ 16 мая 2011

Если вы используете C99, просто включите stdint.h.Кстати, 64-битные типы существуют, если процессор их поддерживает.

0 голосов
/ 06 апреля 2018

Спрашивающий фактически спрашивал о int16 (и т. Д.), А не о (некрасиво) int16_t (и т. Д.).

В папке Linux / usr / include / нет стандартных заголовков, которые бы определяли их без "_t".

...