나는 인터넷에서 const
+ extern
을 찾았지만 실제로는 내 질문에 대한 좋은 대답이 아닌 것으로 보인다.extern과 const의 조합을 사용하는 변수에 대한 질문
const
은 내부 연결을 의미하지만 컴파일 단위간에 const 변수를 공유하려는 경우에만 사용합니다. extern
이 최선의 선택입니까?
공통 솔루션은 다음과 같습니다
// Say, I want to use this MAX in the same header file.
// g.h
extern const int MAX;
class AClass
{
public:
AClass(): i(MAX){}
private:
int i;
};
컴파일러 같은 불평 할 것이다 : "오류 C2057가 : 예상 상수 표현을"
//g.h
extern const int MAX;
// g.c
extern const int MAX = 3;
그러나,이 솔루션은 다음과 같은 단점이있다.
해결 방법은 있습니까?
// g.h
enum { MAX = 3; }
// g.c
#include "g.h"
static char buf[MAX];
당신은 MAX
의 주소를 취할 수 없습니다 만, 결국 당신이 제로에이 얻을 :
IIRC VS 당신이 헤더 다음'CONST INT 최대의'통근 CONST의 INT의 최대 = 3' 수행 할 수 있습니다,'소스에. 적어도 정적 멤버 변수에 대해서는 작동합니다. BTW는 소스 파일에서 extern 키워드를 정의하려고하므로 extern 키워드를 제거하십시오. – RedX
여러 정의가 발생하지 않습니까? –
@DaiHaoci : 왜 외부 연결을 원하나요? 어떤 장점이 있다고 생각하십니까? – ildjarn