이 문제에 대한 여러 게시물을 보았지만 그 중 아무 것도 내 관심사를 잘 설명하지 못하므로 여기서 이해할 수있는 부분을 설명하고 잘못된 부분을 수정하십시오.Extern 및 const in C++
//definitions.h
extern const float fallingTime;
지금, 나는이 선언을 사용하려면 두 개의 소스 파일이 :
나는 다음과 같은 선언 헤더 파일이 있다고 가정.
//source1.cpp
#include "definitions.h"
const float fallingTime = 0.5f;
//use fallingTime
//source2.cpp
#include "definitions.h"
//just use fallingTime (no definition required)
이것은 내가하는 일입니다. 하지만 지금은이 다른 방법으로 진행하겠습니다. 나는 여러 소스를 읽고 결론을 내렸다
//definitions.h
const float fallingTime = 0.5f; //Note that I don't use extern now
//source1.cpp
#include "definitions.h"
//just use fallingTime (no definition required)
//source2.cpp
#include "definitions.h"
//just use fallingTime (no definition required)
으로는 메모리와 컴파일 시간을 절약하는 메모리 할당은 후자 반면, (source1.cpp 모두의 정의)를 발생하기 때문에, 이전 방식의 장점이며, Approach 메모리 할당은 definitions.h (source1.cpp 및 source2.cpp)를 포함하는 모든 소스 파일에서 발생합니다. 그 맞습니까?
마지막으로, extern을 사용하고 상수를 동시에 정의하는 것은 무엇을 의미합니까? 이전 접근 방식과 동등한가? fallingTime에 대한 주소가 없습니다로
//definitions.h
extern const float fallingTime = 0.5f;
체크 아웃 const에 대한 외부 및 내부 연결. – Sumeet
네, 맞습니다 .. –
또한 컴파일러에 따라 달라집니다 .. –