似乎在 XCode 上我需要在 Visual C++ 上使用 std::size_t 而不仅仅是 size_t 。但这很痛苦,因为我真的不想在我的代码中使用 #include <cstddef> 并将每个 size_t 更改为 std::size_t ......在我的 Windows 代码中 size_t 只是在不包含任何其他文件的情况下工作。

有没有办法让我现有的代码在 XCode 中工作(也许通过 .pch 文件?)或者 GCC/MSVC++ 在这方面根本不同,我的代码需要使用 std::size_t 才能跨平台?

最佳答案

根据 C++03 标准,17.4.1.2.4:



换句话说,通过选择使用 <cstddef> 而不是 <stddef.h> ,您特别要求类型 size_t 位于命名空间 std 内。

所以,这里是选择:

  • 改用 <stddef.h>,因此 size_t 位于顶级命名空间中,正如 Jesse Good 所建议的那样。
  • 使用 <cstddef> 并使用 std::size_t
  • 按照 cnicutar 的建议,使用 <cstddef> 并使用 using 声明将 size_t 拉入顶级命名空间。

  • 当然,您可以依赖这样一个事实:一个编译器/库/平台的一个特定版本可以让您摆脱它,或者为每个平台编写不同的代码,或者用 autoconf 包装整个事情,或者编写代码生成器或 sed -基于预处理器,或其他什么......但为什么呢?

    关于c++ - XCode 上的 size_t,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10823878/

    10-09 04:42