10

我在 GCC 和 MinGW 中寻找 uint24_t 和 uint48_t 类型。我知道两者都不是标准化的,但我在网上遇到了对它们的引用,我试图弄清楚:

  1. 我需要为他们包括什么标题。
  2. 无论它们是跨平台的(至少在 Windows、Linux 和 Mac OSX 上),还是仅针对特定目标。
  3. 他们叫什么名字。uint24_t,__uint24,__uint24_t?
4

1 回答 1

14

标准 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);

使用 uint64_t 作为基础也可以对 48 位执行相同的操作。

于 2013-05-04T19:02:53.537 回答