XCode上的size_t

Mr.*_*Boy 3 c++ xcode gcc stl visual-c++

在XCode上我似乎需要在Visual C++上使用std :: size_t而不是size_t.但是,这是一种痛苦,因为我真的不希望有#include <cstddef>和改变每size_tstd::size_t我的代码......在我的Windows代码size_t只是工作不包括任何其他文件.

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

aba*_*ert 7

根据C++ 03标准,17.4.1.2.4:

除第18条至第27条所述外,每个标题cname的内容应与ISO/IEC 9899:1990编程语言C(第7条)或ISO/IEC中规定的相应标题名称h的内容相同. :1990编程语言-C修正案1:C完整性,(第7条),酌情包括在内.但是,在C++标准库中,声明和定义(在C中定义为宏的名称除外)在命名空间std的命名空间范围(3.3.5)内.

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

那么,以下是选择:

  1. <stddef.h>相反,请使用size_t顶级命名空间,如Jesse Good所建议的那样.

  2. 使用<cstddef>和使用std::size_t.

  3. 根据cnicutar的建议,使用<cstddef>并使用using声明来size_t引入顶级命名空间.

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


cni*_*tar 6

也许在靠近顶部的地方说这个?

using std::size_t;
Run Code Online (Sandbox Code Playgroud)

  • using namespace std; 用std废话污染整个范围,尽可能避免这种情况 (6认同)
  • @ H2CO3我发现有点过了.然后,我不太了解C++. (2认同)