sizeof(void *)!= sizeof(uintptr_t)在实践中?

时间:2017-06-04 19:05:53

标签: c c99

虽然C99标准理论上允许sizeof(void*) != sizeof(uintptr_t)(至少据我理解),是否存在宽度不同的现代系统?即,作为一个实际问题,依靠这些类型具有相同宽度的假设是否合理?

1 个答案:

答案 0 :(得分:2)

  

C99标准理论上允许T是否存在宽度不同的现代系统?

我今天不知道这样的系统(但也许你可能会发现一些奇怪的VLIW嵌入式微控制器)。 1990年代Cray是一个例外(但它是C89,而不是C99)。

  

即,作为一个实际问题,依靠这些类型具有相同宽度的假设是否合理?

练习 当然是。顺便说一下,您的源代码通常会有其他依赖关系(例如,通常使用一些非C99标准函数,但通常使用的函数,例如POSIX)。

(在实践中,严格遵守不依赖于外部库的C99有用程序非常罕见)