2013-03-14 2 views
0

전역 변수와 유사하게 (extern 키워드를 통해) 전역 이름 공간을 정의하는 방법은 무엇입니까? 나는 다음을 시도했지만 작동하지 않습니다 :전역 이름 공간을 정의하십시오.

//header 
#ifndef ASD_H 
#define ASD_H 

namespace Goo 
{ 
    int var; 
} 
#endif 

이 헤더 파일은 내가 네임 스페이스에 액세스해야하는 모든 .cpp 파일에 포함됩니다. 이것은 작동하지 않습니다. 이것이 올바르게 어떻게 이루어 졌습니까?

+0

"작동하지 않습니다." <- 어떤 방법으로 작동하지 않습니까 ??? WTF 당신이하려고합니까? –

+0

@BoPersson 절대적으로 옳았습니다. 그것은 저의 질문이었습니다. 그것은 또한 저 스레드에서 깔끔하게 대답되었습니다. 잘못 작성한 질문에 미안하지만 어떻게 든 삭제할 수 있습니까? Stackoverflow의 가치는 없지만, 다른 한편으로는 (3 가지) 기여금을 모두 neglegt하고 싶지는 않습니다. 어떻게해야합니까? – BillyJean

답변

3

기본 네임 스페이스는 전역 네임 스페이스입니다. 코드에 namespace을 명시 적으로 추가하지 마십시오.

네임 스페이스가 작동하는 방식을 알지 못해서이 말을 듣고 있습니다. 그들의 임무는 범위를 지우는 것입니다. 그것들은 사물이 아닙니다. 그들은 어떤 기억도 가리 키지 않습니다. 그것들은 매우 부드럽습니다. 모든 파일은 네임 스페이스를 선언 할 수 있으며 그 안에 나타나는 모든 클래스, 구조체, 함수 등은 해당 네임 스페이스의 일부가됩니다. 다른 파일은 그렇지 않으면 동일한 네임 스페이스를 공유하는 통신 할 필요가 없습니다. 텍스트가 같으면 동일한 네임 스페이스입니다. 귀하의 코멘트에 회신에서

: 그리고 그들은 네임 스페이스에없는 당신이 var1 또는 var2 입력 정확히 것처럼 One::var1Two::var2, 같은 다른 번역 단위로 액세스 할 수 있습니다

namespace One { 
    intvar1; 
} 

namespace Two { 
    int var2; 
} 

- 당신을 의미 필요한 경우 extern을 선언해야합니다.

공통 기본 네임 스페이스가있는 경우 namespace Base::One 또는 Base::Two을 사용할 수 있습니다.

+0

여러 개의 네임 스페이스를 원하기 때문에 묻습니다. 네임 스페이스 var1, 네임 스페이스 하나 var2 등 2 개 ... – BillyJean

+0

@ niles_1710373 편집보기 – djechlin

+0

완벽한 대답 IMHO – AlejandroVK

관련 문제