Я часто вижу исходный код, использующий такие типы, как uint32, uint64, и мне интересно, должны ли они определяться программистом в коде приложения или они определены в стандартном заголовке библиотеки.
Как лучше всего включить эти типы в исходный код моего приложения?
int_leastNN_t
иuint_leastNN_t
дляNN
8, 16, 32 и 64 должны существовать всегда . C99 не допускает реализации без целочисленного типа не менее 64 бит, такlong long
как он должен быть не менее такого размера.stdint.h
требует их всех.typedef uint32_t Uint32;
в include / SDL_stdinc.h (если вы являетесь пользователем SDL)Все эти целочисленные типы определены в
stdint.h
источник
stdint.h
реализации? Также см. Этот вопрос и этот вопросstdint.h
если соблюдаете стандарт C99.stdint.h
. Это возвращает 0 хиты:grep uint32 /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h | grep -v uint32_t
.#include "stdint-gcc.h"
, и поиск в этом файле дает определения._t
суффикс, как указано в ответе выше.Если вы используете C99, просто включите
stdint.h
. Кстати, 64-битные типы есть, если процессор их поддерживает.источник
uint128_t
if__SIZEOF_INT128__
, равный 16 или выше (GCC и совместимые). Он доступен на машинах x86_64 / amd64, но процессор изначально не поддерживает его. Только Cray имеют такой размер регистра, IIRC.Вопросник на самом деле спросил о int16 (и т. Д.), А не о (уродливом) int16_t (и т. Д.).
Нет стандартных заголовков - и в папке Linux / usr / include /, которые определяли бы их без "_t", нет.
источник