除了每种类型可以容纳的值的大小之外,和之间使用的主要区别是什么?是否只是一种惯例,类型用于绝对大小和类型用于抵消?或者它比那更深?size_t
off_t
size_t
off_t
我正在编写一个包装类来启用大文件的编写,mmap
我想知道最好的类型用于他们的参数.鉴于我想要写入> 4GB的文件,我很想将size_t用于所有内容,但这是最佳做法吗?(或者我应该off64_t
为某些功能使用某些类型?)
例如,我的writeAt
函数应该声明为:
MMapWriter::writeAt(off64_t offset, const void* src, size_t size)
Run Code Online (Sandbox Code Playgroud)
要么
MMapWriter::writeAt(size_t offset, const void* src, size_t size)
Run Code Online (Sandbox Code Playgroud)
Ste*_*sop 51
size_t
用于对象,off_t
用于文件.
mmap
根据定义,合并这两个概念.我个人认为我会使用size_t
,因为无论它是什么,映射文件也是(虚拟)内存中的数组.
size_t
是标准的C++,off_t
是Posix的,并且off64_t
是GNU扩展与功能去fopen64
,ftello64
等我想它应该永远是同一类型off_t
的64位GNU系统,但不赌贵公司,如果没有检查.
它是否相关,off_t
是签名而未size_t
签名.但签名对应的size_t
是ptrdiff_t
,所以当你需要签名类型时,它并不自动意味着你应该使用off_t
或off64_t
.
Jam*_*nze 12
size_t
是C++(和C)标准的一部分,它指的是sizeof
表达式的类型. off_t
由Posix标准定义,并指文件的大小.