내 세상

[C++] namespace, std 본문

Language/C/C++

[C++] namespace, std

sga8 2020. 1. 2. 19:17
728x90
반응형

namespace 문법

  - 관련된 함수, 변수, 구조체 등을 묶는 도구

 

핵심

  1. name의 요소에 접근하는 3가지 방법

  2. using 지시어, 선언은 함수 안이나 밖에 있을 수 있음.

  3. 가능한 완전한 이름을 사용하는 것이 좋음.

 

 

#include <iostream>

namespace Video
{
	void init()
	{
		printf("Video Init\n");
	}

}

namespace Audio
{
	void init()
	{
		printf("Audio Init\n");
	}
}

using namespace Audio; // global space

void init()
{
	printf("System Init\n");
}

void main()
{
    // 방법1) 완전한 이름 사용
	Audio::init();
	Video::init();

	// 방법2) using 선언(declaration) 사용
	using Audio::init; // init 함수만 Audio 이름 없이 사용
	init();

	// 방법3) using 지시어(directive) 사용
	using namespace Audio; // Audio 안의 모든 이름을 Audio 없이 사용
	init();

	// ::   : global namespace 에 접근할때 사용, line20
	::init();
}

 

 


std

  - C++ 표준 모든 요소의 namespace

 

C언어 헤더 / C++ 헤더

  - xxx.h   ---->  cxxx

  - string.h --->  cstring

  - stdlib.h --->  cstdlib

 

#include <stdio.h>
#include <algorithm> //해당 헤더파일 내 min(), max() 함수 존재.

using namespace std;  // 이렇게 열어주면 min(10, 3) 이런식으로 바로 사용 가능 함.

int count = 100;
int main()
{
	int n = min(10, 3);
	printf("%d\n", n);

	printf("%d\n", count);   // @@@@@@@@@ 에러 발생 @@@@@@@@@@
	// 에러 이유?
	//    전역변수 count인지, std::count() 함수 주소 출력인지
	//    구별 안되기 때문에.
	//     ----> 이러한 이유로 namespace 보다는 직접 std:: 로 사용하는 것이 좋음.
    
	return 0;
}
728x90
반응형

'Language > C/C++' 카테고리의 다른 글

[C++] C++스타일의 캐스팅  (0) 2020.01.02
[C++] C++11/C++17 에서의 반복문/제어문  (0) 2020.01.02
[C++] 함수  (0) 2020.01.02
[C++] 표준입출력, 변수 선언  (0) 2020.01.02
[C Language] C언어로 퀵소트 구현하기  (0) 2019.10.28