해결된 질문
작성
·
52
·
수정됨
0
강의 식별자 검색 순서 5분 50초 쯤에서
namespace안 Test int data를 주석하는 경우
namespace Test 안의 cout << data<< endl; 에서
data가 모호성이 발생해서 에러가 나는 예시를 보여 주셨습니다. 그 이유를 data의 모호성으로 인해서 global space에 만 data가 있고 cout을 하는 Test namespace에서 data가 없으면 에러를 발생 한다고 하셨는데 std::data 와의 모호성 때문에 생기는 거로 생각 되고 namespace test안에 없고 외부에만 변수가 있더라도 std 같은 중복되지 않는 경우에는 빌드할 때 모호성때문에 에러가 발생 하지는 않지 않나요?
물론 이렇게 하면 코딩할 때 햇갈리긴 할꺼 같습니다.
답변 1
0
식별자 검색 실패나 중복에 따른 모호성 문제는 모두 컴파일 타임에 감지가 됩니다. 매우 단순한 에러라 할 수 있겠습니다. 핵심은 namespace와 같은 소속을 구체적으로 기술하지 않은 식별자의 경우 문법에 따라 검색 순서가 결정되며 그 결과에 따라 구체적인 대상이 달라질 수 있다는 점에 있습니다.
이런 문제를 해결하는 제일 쉬운 방법은 구체적으로 네임스페이스를 기술해주면 되는 것이라 하겠습니다. 또한 가급적 소속이 없는(정확히는 글로벌) 전역 변수는 사용하지 않는 것이 좋겠습니다. 참고하시기 바랍니다. 😄