On 08/17/2010 05:37 PM, Eric Blake wrote:
> On 08/17/2010 05:35 PM, Bruno Haible wrote:
>>>> What a shame that POSIX omitted an <inttypes.h> PRIu* for size_t.
>>>
>>> You can define it by yourself ...
>>
>> Or use uintptr_t instead of size_t. By the definition of these types,
>> you can be sure that uintptr_t is at least as wide as size_t.

Actually, you aren't even guaranteed that; uintptr_t is optional on
non-XSI systems.  But you are correct that uintptr_t is the size of
void*, size_t is the maximum size of an object, and an object must
necessarily fit within a pointer; therefore sizeof(size_t) <=
sizeof(uintptr_t).  The <= is important - it is possible to have a
system with 32-bit size_t and 64-bit void* (or, in older days, a 16-bit
size_t and 32-bit void *).  In fact, people are already experimenting
with that alternate ABI on x86_64 architectures, with demonstrations of
the speedups possible when object sizes are constrained to 4G while
still allowing more than 4G of memory accessible to a single process.

-- 
Eric Blake   ebl...@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to