[C++ 스터디] 네임스페이스란

2022. 7. 1. 20:0003. Resources/C, C++

728x90
반응형

네임스페이스

  • 코드에서 이름이 서로 충돌하는 문제를 해결하기 위해 나온 개념

  • 사용하기 위해서는 namespace 블록으로 감싼다.

      // namespace.h
      namespace mycode {
          void foo();
      }
  • 선언 뿐 아니라 구현 부분도 묶을 수 있다.

      // namespace.cpp
      #include <iostream>
      #include "namespaces.h"
    
      void mycode::foo()
      {
          std::cout << "foo() called in the mycode namespace" << std::endl;
      }

    또는

      // namespace.cpp
      #include <iostream>
      #include "namespaces.h"
    
      namespace mycode {
          void foo()
          {
              std::cout << "foo() called in the mycode namespace" << std::endl;
          }
      }
  • 호출을 위해서는 네임스페이스 뒤에 :: 를 이용하여 부르면 된다.

  • using namespace xxx를 이용하면 xxx 네임스페이스의 접두어를 생략할 수 있다.

    • 헤더 파일 안에서는 절대로 using 문을 작성하면 안 된다. 그러면 그 헤더 파일을 인클루드 하는 모든 파일에서 using 문으로 지정한 방식으로 호출해야 한다.
  • C++17에서는 중첩된 네임스페이스를 좀 더 쉽게 사용할 수 있도록 개선했다.

    • 기존은 아래와 같다.

        namespace MyLibraries {
            namespace Networking {
                namespace FTP {
                    /* ... */
                }
            }
        }
    • C++17 부터는 아래와 같다.

        namespcae MyLibraries::Networking::FTP {
            /* ... */
        }
반응형