【问题标题】:Does it matter which header (cstddef, cstdio, cstdlib, etc.) I include to get the definition of size_t?我包含哪个标头(cstddef、cstdio、cstdlib 等)以获得 size_t 的定义是否重要?
【发布时间】:2018-05-14 04:41:14
【问题描述】:

根据http://en.cppreference.com/w/cpp/types/size_t,类型size_t定义在很多头文件中:cstddef、cstdio、cstdlib等

在编写我自己的代码时,我应该包含哪个头文件以使用size_t

这似乎是一个微不足道的问题,但作为 C++ 的初学者,我关心以下几点:

  • 我能否包含任何头文件并确保 size_t 的行为方式与我包含的头文件相同?
  • 我是否需要注意任何意外,例如包含一个头文件会产生包含另一个头文件不会产生的令人惊讶的副作用?
  • 是否存在与此相关的编码约定或流行约定或实践,导致大多数人包含特定的头文件以获取 size_t 的定义?

【问题讨论】:

  • 这里是a link,您会找到答案
  • @shantanusingh 我在您提供的链接中看不到我的问题的答案。您能否指出答案,讨论在包含特定头文件以获取 size_t 时是否需要考虑优缺点或惊喜?
  • C 中,标题引入了为该标题指定的所有函数和定义。它可能会引入更多,但它们位于为实现保留的命名空间中(前导 __ 或前导 _ 带有大写字母)。在 C++ 中,标头可以包含 other 标头,但话又说回来,在 C++ 中,您会获得命名空间 std::,所以这应该不是问题。无论您在程序中做什么,您通常都会使用您需要包含的任何标题。
  • <cstddef> 比其他的略小,所以如果您不需要其他任何东西...

标签: c++ header c++17 size-t g++4.8


【解决方案1】:

我可以包含任何头文件并确保size_t 的行为方式与我包含的头文件相同吗?

是的。

我是否需要注意任何意外,例如包含一个头文件会产生包含另一个头文件不会有的令人惊讶的副作用?

没有。

是否存在与此相关的编码约定或流行约定或实践,导致大多数人包含特定的头文件以获取 size_t 的定义?

我个人更喜欢<cstddef>,但我不知道有什么约定。

【讨论】:

  • @user202729,我认为没有必要。问题不在于在哪里可以找到size_t 的定义。该帖子已包含该内容。
  • 我看到您在回答中进行了编辑,将您的偏好从 <cstdint> 更改为 <cstddef>。在写答案时您的偏好现在是否发生了变化,还是之前的答案是错字?是什么导致了这种变化?
  • @LoneLearner,我不知道是否称其为错字。这更像是思想和手指不同步。
【解决方案2】:

是否有编码约定或流行约定或惯例 关于这一点,导致大多数人包括一个特定的标题 文件获取size_t的定义?

不,据我所知,没有或至少没有那么受欢迎。就个人而言,在我只需要std::size_t 的情况下,为了不从定义std::size_t 的标头中拖出不必要的代码,我将自己的size_t 定义为:

using size_t = decltype(sizeof(char));

注意:以上也符合std::size_t的标准定义。

【讨论】:

  • 一个有用的注释恕我直言,您自己的定义似乎是定义,至少根据cppreference,所以很有可能它是标准定义。跨度>
  • @luk32 注意已添加 thnx
猜你喜欢
  • 2011-07-02
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
相关资源
最近更新 更多