虽然C99标准理论上允许sizeof(void*) != sizeof(uintptr_t)
(至少据我理解),是否存在宽度不同的现代系统?即,作为一个实际问题,依靠这些类型具有相同宽度的假设是否合理?
答案 0 :(得分:2)
C99标准理论上允许
T
是否存在宽度不同的现代系统?
我今天不知道这样的系统(但也许你可能会发现一些奇怪的VLIW嵌入式微控制器)。 1990年代Cray是一个例外(但它是C89,而不是C99)。
即,作为一个实际问题,依靠这些类型具有相同宽度的假设是否合理?
练习 当然是。顺便说一下,您的源代码通常会有其他依赖关系(例如,通常使用一些非C99标准函数,但通常使用的函数,例如POSIX)。
(在实践中,严格遵守不依赖于外部库的C99有用程序非常罕见)