uint24_t и uint48_t в MinGW

Я ищу типы uint24_t и uint48_t в GCC и MinGW. Я знаю, что ни стандартизированы, но я нашел ссылки на них в Интернете, и я пытаюсь понять:

  1. Какой заголовок мне нужно включить для них.
  2. Являются ли они кросс-платформенными (по крайней мере, в Windows, Linux и Mac OSX) или просто для конкретных целей.
  3. Каковы их имена. uint24_t, __uint24, __uint24_t?

Стандартные типы uintXX_t представлены в stdint.h (C, C ++ 98) или cstdint (C ++ 11).

В 8-битных данных, 24-битной архитектуре AVR-адреса GCC обеспечивает встроенное 24-битное целое число, но оно не переносимо. См. http://gcc.gnu.org/wiki/avr-gcc для получения дополнительной информации об этом.

Нет стандартных 24-битных или 48-битных целых типов, предоставляемых GCC или MinGW независимым от платформы способом, но один простой способ получить переносимое 24-битное число практически на любой платформе – использовать бит-поле:

 struct bitfield24 { uint32_t value : 24; }; bitfield24 a; a.value = 0xffffff; a.value += 1; assert(a == 0); 

То же самое можно сделать для 48 бит, используя uint64_t в качестве базы.