c++ - 什么是最好的 "type renaming"方法?

标签 c++ typedef user-defined-types preprocessor-directive

如果我想将 std::string 类型重命名为更简单、看起来更自然的 string,我应该使用这两种方法中的哪一种(基于性能和通常是什么标准)

我是否应该将其重命名为预处理指令

#define string std::string

或者用类型定义来做

typedef std::string string;

什么是最高效的方法?还有什么更为社区所熟悉和认可?

最佳答案

只是

using std::string;

如果你想要一个稍微不同的名字,例如

using String = std::string;

避免使用宏,它们不考虑作用域并且通常是 Evil™。

例如提议的宏

#define string std::string

... 如果您包含任何标准库 header ,则会产生正式的未定义行为,因为它定义了标准库使用的名称。

C++11 §17.6.4.2.2/1 [宏名称]:

A translation unit that includes a standard library header shall not #define or #undef names declared in any standard library header.

关于c++ - 什么是最好的 "type renaming"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37578352/

相关文章:

c - 尝试在结构 : why do I get an error, 中使用 typedef,这首先是个好主意吗?

c++ - typedef 没有替换为数据类型

oracle - 正确使用收集方法

c++ - 如何为 Visual Studio 2017 构建 CEF1

c - typedef 的指针类型错误

c++ - 不使用通用字符名直接在character-literal中放入unicode是否违法?

c - 如何使用 Fortran 接口(interface)调用包含用户定义类型的 C 函数

oracle - 类型关键字。帮助我在 plsql 中解释这段代码?

c++ - 有没有办法抑制用户定义的类的 fmt 范围格式化程序?

c++ - 更改图像位图或在图像上绘制位图会导致图像消失