应该优先使用在C ++中定义名称别名

时间:2017-10-10 02:57:23

标签: c++ macros using

有些情况下我们需要名称别名,可以决定使用usingdefine,例如:

using ComponentRef = std::shared_ptr<Component>;

#define ComponentRef std::shared_ptr<Component>

是否有某种理由比另一种更受欢迎?

3 个答案:

答案 0 :(得分:4)

您应该首选using,因为#define是一个直接的文字替换,没有&#34; smarts&#34;在它背后。 #define也会在您声明的范围之外持续存在,并且可能会产生奇怪的不良副作用。

答案 1 :(得分:2)

始终更喜欢在宏之前使用任何。当宏替换发生在你没想到的地方时,宏会以意想不到的方式弄乱你的代码。

答案 2 :(得分:-1)

“使用”更好。如果#define似乎是必要的,请考虑是否会改为使用“typedef”:

typedef std::shared_ptr<Component> ComponentRef;