c++ - 对于 C++ 中的名称别名,应该优先使用而不是定义

标签 c++ macros using

有些情况下我们需要别名,可以决定使用using或者define,例如:

using ComponentRef = std::shared_ptr<Component>;

#define ComponentRef std::shared_ptr<Component>

有什么理由比另一个更受欢迎吗?

最佳答案

您应该更喜欢using,因为#define 是一个直接的文本替换,背后根本没有“智能”。 #define 也会在您声明它的范围之外持续存在,并且可能会产生奇怪的副作用。

关于c++ - 对于 C++ 中的名称别名,应该优先使用而不是定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46657972/

相关文章:

c++ - 取消对 unique_ptr 的引用

recursion - 递归宏使无限递归

c++ - 删除遗留代码中的宏

c# - 从 'using' 语句中的函数返回资源实例是否与直接在 'using' 语句中实例化资源相同?

c++ - 别名表达式的最佳方法

c++ - 无法将选项卡中的 Qwidgets 复制到新选项卡

C++ OpenCV 源代码

c++ - 有什么方法可以在 C/C++ 中以编程方式确定 Lua 函数需要多少个参数?

c - 函数和函数指针声明的宏?

c++ - 如何使此模板 typedef 在 C++11 中有效?