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

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

    在很多开源代码中偶尔会使用名字为”detail”或”internal”的命名空间,如OpenCV的modules目录中,有些文件中使用了namespace detail,有些文件中使用了namespace internal。

    名为detail的命名空间通常与名为internal的命名空间具有相同的使用方式。它们通常用于在公共接口中不可见或至少应被上层用户忽略的”内部细节(internal detail)”。

    以下为非常简单的测试代码段:

    funset.hpp:

  1. namespace common {
  2. namespace internal {
  3. char* name();
  4. } // namespace internal
  5. } // namesapce common

    funset.cpp:

  1. namespace common {
  2. namespace internal {
  3. char* name() { return "spring"; }
  4. const char* city = "BeiJing";
  5. } // namespace internal
  6. namespace detail {
  7. class Addr {
  8. public:
  9. static char* csdn() { return "https://blog.csdn.net/fengbingchun"; }
  10. static char* github() { return "https://github.com/fengbingchun"; }
  11. Addr() = delete;
  12. }; // class Addr
  13. } // namespace detail
  14. } // namesapce common
  15. int test_namespace_detail_internal()
  16. {
  17. fprintf(stdout, "name: %s, city: %s\n", common::internal::name(), common::internal::city);
  18. fprintf(stdout, "csdn addr: %s\ngithub addr: %s\n", common::detail::Addr::csdn(), common::detail::Addr::github());
  19. return 0;
  20. }

    执行结果如下:

    GitHubhttps://github.com/fengbingchun/Messy_Test

相关文章