代码之家  ›  专栏  ›  技术社区  ›  Charlie

尺寸和偏移量使用指南?

c++
  •  3
  • Charlie  · 技术社区  · 15 年前

    这可能是C++ 101的问题:我很好奇这些指南是如何使用的。 size_t offset_t 例如,它们的用途是什么,它们不适用于什么,等等。我没有做过很多可移植的编程,所以我通常只是使用 int unsigned int 用于数组大小、索引等。但是,我认为在可能的情况下,最好使用这些更标准的typedef中的一些,因此我想知道如何正确地做到这一点。

    作为后续问题,对于使用Visual Studio 2008开发Windows,我应该在哪里查找实际的typedef?我找到了 西泽特 在vs安装目录中的多个头文件中定义,因此我不确定应该使用哪个头文件,也找不到 奥弗塞特 任何地方。

    5 回复  |  直到 9 年前
        1
  •  11
  •   Martin v. Löwis    15 年前

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

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

        2
  •  3
  •   fbrereto    15 年前

    而不是 offset_t 你是说 ptrdiff_t ?这是由以下例程返回的类型: std::distance . 我的理解是 size_t 是无符号的(与前面提到的地址空间匹配),而 pTrdFifft 是有符号的(理论上表示指针之间的“向后”距离,尽管很少使用)。

        3
  •  1
  •   Stack Overflow is garbage    15 年前

    offset_t 在我的C++标准中没有提到过。

    size_t 另一方面,它只是用来表示对象或数组的大小。一 西泽特 保证足够大以存储内存中任何对象的大小,因此应该使用它。

        4
  •  1
  •   Pavel Minaev    15 年前

    你用 size_t 每当C++语言规范指示它在特定表达式中使用时。例如,您将使用 西泽特 存储的返回值 sizeof 或表示数组中的元素数( new[] 西泽特 )

    我不知道什么 offset_t 是-在ISO C++规范中没有提到过一次。

        5
  •  0
  •   TDHofstetter    9 年前

    把旧的拖回去…offset_t(很长)由solaris的llseek()系统调用使用,可以在任何可能遇到实际64位文件偏移的地方使用…意思是你真的在工作 巨大的 文件夹。