hyunjin

[씹어먹는 C++]< 1- C++> namespace 본문

개인 공부/C++

[씹어먹는 C++]< 1- C++> namespace

_h.j 2021. 3. 2. 18:16
728x90

씹어먹는 c++1.2

namesapce

namespace가 정의된 파일을 먼저 #include 한 다음 namespace로 선언한 후 사용.

 

1. header1이라는 이름 공간이 header1이라는 헤더 파일에 존재

#include "header1.h"

using namespace header1;

int main(){
	foo();
}

 

 

2. iostream 파일 안에 header1이라는 이름 공간이 존재하는 경우

#include <iostream>

using namespace header1;

int main(){
	foo();
}

 

주의

using namespace std; 와 같이 어떤 이름 공간 사용하겠다 선언하는 것 권장X

이름 겹치는 함수 만들면 오류 발생.

usgine namespace std; 대신 std:: 직접 앞에 붙여 std 이름 공간의 함수다 명시해주는 방법이 더 좋음.

호깃 모를 이름 충돌로 부터 보호하기

 


이름 없는 이름 공간

#include <iostream>
//using namespace std; 
//namespace 선언하는 것 권장하지않음

/*이름 없는 이름 공간*/
namespace {
// 이 파일 안에서만 사용 가능
// 헤터 파일 통해 이 파일을 받았다 하더라도 이 익명의 namescpae 안에 정의된 것들 사용 불가
// 마치 static 키워드 사용한 것과 같은 효과
int OnlyInThisFile(){}
int only_in_this_file = 0;
}

int main() {

	std::cout << "hello world\n";

	OnlyInThisFile();
	only_in_this_file = 3;

	return 0;
}

static으로 선언한 것 처럼 사용 가능

 


 

728x90