C++中namespace detail或namespace internal的使用

x33g5p2x  于2022-05-05 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(173)

    在很多开源代码中偶尔会使用名字为”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;
}

    执行结果如下:

    GitHubhttps://github.com/fengbingchun/Messy_Test

相关文章

微信公众号

最新文章

更多