CS/C++

[Mastering C++ Programming] - Nested namespace

sliver__ 2022. 12. 3. 09:07
728x90
  • 기존 namespace 선언은 아래와 같다. (-std=c++17 이전)
namespace A
{
	namespace B
    {
    	namespace C
        {
        	int x;
        }
	}
};

int main(void)
{
	A::B::C::x = 100;
    cout << A::B::C::x << endl;
}
  • -std=c++17 버전에서는 아래와 같이 선언할 수 있다.
namespace A::B::C{
	int x;
}

int main(void)
{
	A::B::C::x = 100;
    cout << A::B::C::x << endl;
}
  • namespace 선언이 간편해졌다.
  • -std=c++17 옵션을 지정안하고 빌드하면 아래와 같은 에러가 나온다.
  • 하지만 빌드는 됀다.
Namespace.cpp:4:12: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
namespace A::B::C::D::X{
           ^~~~~~~~~~~~
            { namespace B { namespace C { namespace D { namespace X
728x90