c++ - 使用 namespace 别名优于预处理器的好处

标签 c++ namespaces c-preprocessor

<分区>

命名空间别名相对于#define有什么好处?

namespace NS1{
    namespace NS2 {
        namespace NS3
        {
            void fun() {
                std::cout << "Understanding namespace alias\n";
            }
        }
    }
}

#define NS NS1::NS2::NS3
//over
namespace NS=NS1::NS2::NS3;

最佳答案

当使用别名时,编译器会知道 NS 符号,而当使用宏时,它会在找到字符串时替换它。因此,如果您碰巧有一个名为 NS 的局部变量,它将用 NS1::NS2::NS3 替换它,这几乎不是您想要的。

关于c++ - 使用 namespace 别名优于预处理器的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956433/

相关文章:

ios - iOS 中的某些 C 函数复制为 #define

c++ - 如何用 Python 判断一个文件在 Windows 上是否可执行?

c++ - Poco Logger 更改 Message 参数

c++ - 如何重载 << 运算符以使用模板函数将元素添加到 vector 中? (c++)

xml - 在 Oracle 中选择 xml 元素值

c - 如何使宏的第一次调用不同于所有后续调用?

macros - C 预处理器,递归宏

c++ - 如何隐藏 dll 导出类中的成员变量

c# - 如何从泛型类型获取命名空间?

C# - 如何删除具有命名空间的 XMLDocument 中的声明和元素?