【发布时间】:2013-06-08 09:39:01
【问题描述】:
sizeof(size_t)==8 是否相当于说平台是 64 位的?
反过来说sizeof(size_t)==4是不是相当于说平台是32位的?
更重要的是,该测试是否在所有情况下都安全可靠,同时牢记操作系统和编译器的可移植性?是否有一些奇怪的极端情况,包括size_t 可能丢失的潜在情况?
我有点担心size_t 可能只适用于 C99 环境。
【问题讨论】:
-
“平台是 32/64 位”的概念定义不明确。这是什么意思?这可能意味着
int中的任何一个都这么宽,long这么宽,CPU 的指令带有这么宽的操作数,操作系统供应商在产品名称中有数字,等等。您要解决的实际问题是什么?为什么你认为“平台大小”是一个问题?sizeof(size_t)可以是 1(!),它可以是 32 位或 64 位或其他平台。整数类型的限制在<limits.h>,其他的都在猜测。
标签: c 64-bit portability