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