? ? ? 在很多开源代码中偶尔会使用名字为”detail”或”internal”的命名空间,如OpenCV的modules目录中,有些文件中使用了namespace detail,有些文件中使用了namespace internal。
? ? ? 名为detail的命名空间通常与名为internal的命名空间具有相同的使用方式。它们通常用于在公共接口中不可见或至少应被上层用户忽略的”内部细节(internal detail)”。
? ? ? 以下为非常简单的测试代码段:
? ? ? funset.hpp:
namespace common {
namespace internal {
char* name();
} // namespace internal
} // namesapce common
? ? ? funset.cpp:
namespace common {
namespace internal {
char* name() { return "spring"; }
const char* city = "BeiJing";
} // namespace internal
namespace detail {
class Addr {
public:
static char* csdn() { return "https://blog.csdn.net/fengbingchun"; }
static char* github() { return "https://github.com/fengbingchun"; }
Addr() = delete;
}; // class Addr
} // namespace detail
} // namesapce common
int test_namespace_detail_internal()
{
fprintf(stdout, "name: %s, city: %s\n", common::internal::name(), common::internal::city);
fprintf(stdout, "csdn addr: %s\ngithub addr: %s\n", common::detail::Addr::csdn(), common::detail::Addr::github());
return 0;
}
? ? ? 执行结果如下:
? ? ? GitHub:https://github.com/fengbingchun/Messy_Test
|