extern int foo; //default
static int bar;
정적 변수는있다 선언 모듈 내에서 볼 수 있으며 내보낼 수 없습니다. extern 선언의 경우 변수는 정적 변수에 의해 음영 처리되지 않는 한 연결된 모든 모듈의 공통 네임 스페이스에 있습니다.
정적 변수는 해당 모듈에서 정의해야하지만 extern 변수는 다른 어딘가에서 정의 할 수 있습니다. 사용 된 경우이를 정의해야합니다.
제 컴파일러 (GCC)는
static int bar = 5;
을 허용하지만, 통근 변수가 키워드 '통근'으로 정의되지 않습니다 것으로 예상 것으로 보인다
extern int foo = 4;
에 불평 캐스트. 질문
위 예제의 'foo'객체는 정의 된 모듈에 어떤 종류의 저장 클래스가 있습니까?
신고 내용은 무엇입니까? 나는 그것이 여러 번 정의되고 있다고 불평한다고 생각한다. – Skurmedel
"extern"은 실제로 "다른 사람이이 값을 정의한 것입니다."- 따라서 extern 선언에 값을 할당하려고 시도하는 것이 타당하지 않습니다. 당신은 단순히 "int foo = 4;" * 하나 * C 파일, 당신은 괜찮아. – Erik
extern의 값을 설정할 수 없습니다. 인스턴스를 소유하고 있지 않습니다. 정상적으로 선언 한 모듈은 – forsvarir