C标准(ISO/IEC 9899:2011或9899:1999)定义了类型ptrdiff_t在<stddef.h>.
POSIX标准(ISO/IEC 9945; IEEE标准1003.1-2008)定义了类型ssize_t在<sys/types.h>.
ssize_t与实现不同的实现ptrdiff_t?dan*_*n04 29
是否存在ssize_t的基础类型与ptrdiff_t不同的实现?
x86-16与大内存模型.指针远(32位),但单个对象仅限于一个段(因此size_t允许为16位).
Adr*_*thy 22
Open Group Base Specifications Issue 7,IEEE Std 1003.1,2013 Edition,描述<sys/types.h>说:
类型ssize_t能够存储至少在[-1,SSIZE_MAX]范围内的值.
换句话说,ssize_t已签名,但它可以表示的负值集可能仅限于{-1}.
ptrdiff_t另一方面,A 保证具有更对称的正/负范围.
我承认,在实践中,这似乎不太可能ssize_t在负范围内受到限制,但这是可能的.
当然,另一个区别是,ptrdiff_t无论何时使用标准C或C++编程,ssize_t都可以使用,但除非您的目标是标准POSIX系统,否则可能无法使用.
| 归档时间: |
|
| 查看次数: |
10335 次 |
| 最近记录: |