외부 링크가있는 상수를 정의하려는 abc.h라는 헤더 파일이 있습니다. 따라서 문이 포함되어 있습니다.extern const in C++
--------------- abc.h ----------------------- -
extern const int ONE = 1;
다음으로 main.cpp가 있습니다. 여기서 하나의 값을 사용하고 싶습니다. 따라서 나는 그것을 사용하기 전에 main.cpp에 하나를 선언한다.
--------------- main.cpp --------------- ------
extern const int ONE;
int main()
{
cout << ONE << endl;
}
"ONE의 다중 정의"오류가 발생합니다.
내 질문은, 어떻게 const 외부 링크로 선언 할 수 있으며 상수의 정적 버전을 포함하는 각 파일에 반대 상수 하나의 메모리 위치가 있도록 다른 파일에서 이후에 그것을 사용할 수 있습니다.
main.cpp에서 #include "abc.h"가 삭제되었으며 모든 것이 작동합니다.
g ++ abc.h MAIN.CPP -o 메인
ONE의 주소 헤더와 메인 동일하다. 그래서 작동합니다.
는하지만 난 그것은 마법을 수행 ++ g처럼 보인다 MAIN.CPP
에 문을 포함 컴파일러가없이 하나의 정의를 해결하는 방법을 이해 해달라고. main.cpp의 독자가 main.cpp에 "abc.h"를 포함하지 않으므로 ONE이 선언 된 곳을 알지 못하는 나쁜 습관입니까? 내가 외부 링크와 CONST를 선언하고 다른 파일에 이후에 그것을 을 사용하는 방법을
'무엇을 first'입니까? –
내 잘못, 먼저 제거됨 – Jimm
두 위치 모두에 'extern'이 있습니까? (위에서 작성한 코드가 나를 위해 잘 작성되었습니다.) 또한 [Extern과 const 혼합하기] (http://stackoverflow.com/questions/2190919/mixing-extern-and-const)를 확인하십시오. –