有些情况下我们需要名称别名,可以决定使用using
或define
,例如:
using ComponentRef = std::shared_ptr<Component>;
#define ComponentRef std::shared_ptr<Component>
是否有某种理由比另一种更受欢迎?
答案 0 :(得分:4)
您应该首选using
,因为#define
是一个直接的文字替换,没有&#34; smarts&#34;在它背后。 #define
也会在您声明的范围之外持续存在,并且可能会产生奇怪的不良副作用。
答案 1 :(得分:2)
始终更喜欢在宏之前使用任何。当宏替换发生在你没想到的地方时,宏会以意想不到的方式弄乱你的代码。
答案 2 :(得分:-1)
“使用”更好。如果#define似乎是必要的,请考虑是否会改为使用“typedef”:
typedef std::shared_ptr<Component> ComponentRef;