Mr.*_*Boy 3 c++ xcode gcc stl visual-c++
在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:
除第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中.
那么,以下是选择:
<stddef.h>
相反,请使用size_t
顶级命名空间,如Jesse Good所建议的那样.
使用<cstddef>
和使用std::size_t
.
根据cnicutar的建议,使用<cstddef>
并使用using声明来size_t
引入顶级命名空间.
当然,你可以依赖这样一个事实:一个特定版本的一个编译器/库/平台可以让你逃脱它,或为每个平台编写不同的代码,或用autoconf包装整个事件,或编写代码生成器或sed基于预处理器,或者其他什么......但为什么呢?
也许在靠近顶部的地方说这个?
using std::size_t;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3828 次 |
最近记录: |