3. 名字空间的声明拆分

当我们项目的比较庞大,需要编写功能比较多,同时我们需要将这些标识符声明在同一个名字空间内,按我们之前的做法可能是仅仅写一个 .cpp 文件,然后定义一个名字空间(namespace),然后将所有的名字空间声明都写在其中,这种做法虽然可行,但当我们维护这些代码时就变得无比的麻烦。因此 C++ 中,我们可以用 名字空间的声明拆分 的方法将一个名字空间的声明拆分成多个部分,甚至放在不同的文件中。

例如,之前的名字空间 chinese_env 的声明中,将两个标识符 mystrsay_hello 声明在一段代码中,如下所示。

// 定义中文运行环境的名字空间
namespace chinese_env {
    const char * mystr = "你好";
    void say_hello(const char * name) {
        std::cout << mystr <<" "<< name <<std::endl;
    }
}

其实我们可以将上述两个标识符的声明写成两部分,并放入到不同的文件中。如下所示:

// 定义中文运行环境的名字空间
namespace chinese_env {
    const char * mystr = "你好";
}
// 定义中文运行环境的名字空间
namespace chinese_env {
    void say_hello(const char * name) {
        std::cout << mystr <<" "<< name <<std::endl;
    }
}

这样仍然不影响其使用。