关于size_t和offset_t用法的指导原则?

Cha*_*lie 4 c++

这可能是一个C++ 101问题:我很好奇的准则是使用size_toffset_t,如他们的目的是什么情况了,什么情况下,他们不打算等我没有做很多便携式编程的,所以我也通常只是用类似intunsigned int数组大小,索引等.但是,我认为最好在可能的情况下使用其中一些更标准的typedef,所以我想知道如何正确地做到这一点.

作为后续问题,对于使用Visual Studio 2008在Windows上进行开发,我应该在哪里查找实际的typedef?我发现size_t在VS安装目录中的多个头文件中定义了,所以我不确定我应该使用哪些头文件,而且我找不到offset_t任何地方.

Mar*_*wis 13

你可能指的是off_t,而不是offset_t.off_t是POSIX类型,而不是C类型,它用于表示文件偏移(即使在32位系统上也允许64位文件偏移).C99取代了它fpos_t.

size_t用于计算字节或数组元素.它匹配地址空间.


fbr*_*eto 5

而不是offset_t你的意思ptrdiff_t?这是诸如std::distance. 我的理解是它size_t是无符号的(以匹配前面提到的地址空间)而ptrdiff_t有符号(理论上表示指针之间的“向后”距离,尽管很少使用)。