有人知道size_t
的最大值小于的任何工具链/平台/目标组合,而不是unsigned int
的最大值吗?
我认为C和C ++标准原则上允许这样做,并且它(理论上)可能对某些奇怪的MCU有用,但我在实践中从未见过这一点。
注意:
我故意用c和c ++标记这个,因为我对这两种语言的答案感兴趣(如果你的答案是特定于语言的,请说明),我还没有看到任何使用不同大小的工具链/目标组合无论如何,c和c ++中的类型。
答案 0 :(得分:6)
H8 / 300可以配置为。使用GCC(配置了三重h8300-elf
或h8300-rtems
),这是-mint32
标志:
gcc/config/h8300/h8300.h:555:
#define SIZE_TYPE \
(TARGET_H8300 || TARGET_NORMAL_MODE ? TARGET_INT32 ? "short unsigned int" : "unsigned int" : "long unsigned int")
因此,当-mint32
传递为32位int
时,size_t
基于16位short
。
(还要注意,根据该文件中的注释,GCC要求size_t
和void *
的大小必须相同)