我正在寻找GCC和MinGW中的uint24_t和uint48_t类型.我知道它们都不是标准化的,但我在网上遇到了对它们的引用,我想弄清楚:
wjl*_*wjl 11
标准的uintXX_t类型在stdint.h(C,C++ 98)或cstdint(C++ 11)中提供.
在8位数据,24位地址AVR架构上,GCC提供内置的24位整数,但它不可移植.有关它的更多信息,请参见http://gcc.gnu.org/wiki/avr-gcc.
GCC或MinGW没有以独立于平台的方式提供标准的24位或48位整数类型,但是在几乎任何平台上获得便携式24位数字的一种简单方法是使用位域:
struct bitfield24 {
uint32_t value : 24;
};
bitfield24 a;
a.value = 0xffffff;
a.value += 1;
assert(a == 0);
Run Code Online (Sandbox Code Playgroud)
使用uint64_t作为基数,可以对48位进行相同的操作.