【问题标题】:including header file for size_t returned by sizeof operator包括 sizeof 运算符返回的 size_t 的头文件
【发布时间】:2015-02-12 06:01:13
【问题描述】:

我是否应该包含带有 size_t 定义的头文件(例如 cstddef 或 stddef.h)以使用返回该类型的 sizeof 关键字?

例如:

//..no include

int main()
{
    size_t n;  //error: unknown type size_t
    sizeof(int);  //ok, but returned size_t type also undefined
    return 0;
}

【问题讨论】:

  • 如果你想明确使用size_t,那么可以。如果没有,那就没有。
  • 你必须这样做。很糟糕,我不知道哪个标题。它也是 c++ 的 std::size_t。
  • 根据en.cppreference.com/w/cpp/types/size_t定义在多个header中。
  • 这是个不错的问题 - 为什么投反对票?

标签: c++ sizeof size-t


【解决方案1】:

如果由于某种原因您不想包含标头,则可以让 C++ 推断正确的类型:

decltype(sizeof(0)) n;

【讨论】:

  • 一个不错的 - 根本没有标题 - 但也很丑
  • 您可以写一次using size_t = decltype(sizeof(0));,然后照常使用size_t
【解决方案2】:

如果您需要显式使用size_t(即在声明或定义中),您只需要包含cstddefstddef.h。如果您只想使用sizeof 确定特定类型的大小,则没有必要。例如,以下语句不要求您包含任何头文件来使用sizeof 来确定类型的大小。

int a = sizeof(foo);
if(sizeof(foo) == 12) {}

如果您专门寻找有关 sizeof 的信息,我建议您查看 C++ 标准的 5.3.3 ([expr.sizeof]) 以了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 2013-11-21
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多