extern const 또는 extern을 헤더 파일에서 같은 것으로 선언하고 있습니까? 또한 외부 연결을 제공 할 것인가?글로벌 extern const 설명
globals.cpp
#include <string>
extern const std::string foo = "bar";
globals.h
#ifndef GLOBALS_H
#define GLOBALS_H
#include <iostream>
extern const std::string foo;
#endif /* GLOBALS_H */
또는
globals.h
#ifndef GLOBALS_H
#define GLOBALS_H
#include <iostream>
extern std::string foo;
#endif /* GLOBALS_H */
모두 컴파일과 잘 실행, 모두 같은 주소 때 제공 m에서 사용됨 ultiple 파일, 어느 것이 더 정확합니까?
"더 정확합니다"라는 질문은 없습니다. 그 중 하나는 실제로 부정확하며 foo가 실제로 사용되면 오류가 발생합니다. 아래 내 대답을 참조하십시오. –
나는 다른 파일에서 coo foo.c_str()을 수행했지만 여전히 컴파일하고 실행합니다. 이상한. –
잘못된 것 같습니다. 더 복잡한 작업이 있거나 컴파일러/링커가 선언을 잘 검사하지 못합니다. 이 파일 중 하나에서 foo를 수정하려고하면 어떻게됩니까? 예 : foo.clear();를 수행합니까? 괜찮아? 그렇다면 헤더에 "const"버전을 사용하면 여전히 컴파일됩니까?(여전히 컴파일하는 경우 파일이보고있는 헤더의 선언이 아닐 것입니다.) –