나는 그런 예쁜 코드를 가지고 :왜 컴파일러는 모호한 변수 정의를 허용합니까?
물론//example1
namespace
{
int a;
}
int a;
main()
{
a++;
return 0;
}
, g ++ 4.6.1 컴파일러는 컴파일 에러 출력 할 수 없습니다 그것은 모든 권리
./temp.cpp: In function ‘int main()’:
./temp.cpp:10:5: error: reference to ‘a’ is ambiguous
./temp.cpp:6:5: error: candidates are: int a
./temp.cpp:2:9: error: int {anonymous}::a
을! 내가 변수 "" "주요"기능에서을에 대한 참조를 삭제할 때
하지만, 프로그램이 잘 컴파일되고 :
//example2
namespace
{
int a;
}
int a;
main()
{
return 0;
}
1) g ++ 컴파일러의 정의를 허용 않는 이유 변수 ""과 같은 경우 해당 참조가 허용되지 않는 경우?
2) g ++ 컴파일러의 기능 뿐이며 다른 컴파일러는 이러한 코드 (example2)를 컴파일 할 수 없습니까?
3) g ++ 컴파일러는 해당 코드 (예 2)를 오류로 해석하는 해당 플래그가 있습니까?
모두에게 감사드립니다.
정말! :) 나는 그런 변수의 "a"사용법에서 소스 코드의 끝에 놓여 야한다고 생각한다. –
가장 좋은 위치에 놓아야한다 ... –