size_t的大小与unsigned int的比较

时间:2018-06-18 09:41:11

标签: c++ c

有人知道size_t的最大值小于的任何工具链/平台/目标组合,而不是unsigned int的最大值吗?

我认为C和C ++标准原则上允许这样做,并且它(理论上)可能对某些奇怪的MCU有用,但我在实践中从未见过这一点。

注意:
我故意用c和c ++标记这个,因为我对这两种语言的答案感兴趣(如果你的答案是特定于语言的,请说明),我还没有看到任何使用不同大小的工具链/目标组合无论如何,c和c ++中的类型。

1 个答案:

答案 0 :(得分:6)

H8 / 300可以配置为。使用GCC(配置了三重h8300-elfh8300-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_tvoid *的大小必须相同)