기억 부류 전역  지역  정적  레지스터 
 지정자  extern auto  static  register 
 저장 장소 정적 데이터 영역 스택  정적 데이터 영역  cpu의 레지스터 
 선언 위치 함수의 외부  함수의 내부  함수의 내부  함수의 내부 
 통용 범위 프로그램 전체 함수의 내부  함수의 내부  함수의 내부 
 파괴 시기 프로그램 종료시 함수 종료시 프로그램 종료시  함수 종료시 
 초기값 0으로 초기화 초기화되지 않음 0으로 초기화 초기화되지 않음 

외부변수 예제 (extern)
#include <Turboc.h>

int before = 11;

void main()
{
	extern int before;
	extern int after;

	printf("befere=%d, after=%d\n", before, after);
}

int after = 22;

main 안에 extern을 선언하여 before, after가 함수 바깥의 어딘가에 선언되어 있다고 알게된다
extern은 생략이 가능하다. 결국 같은 모듈 안에서는 별로 쓸모가 없다.

extern이 꼭 필요한 경우는 전역변수가 다른 외부 모듈에 선언되어 있을 때이다.

 #include <Turboc.h>

void main()
{
      printf("value is %d\n", value);
}
int value = 1234;




 extern.cpp  global.cpp

extern.cpp가 컴파일 될 때 어디인가 선언되어 있다고 알려준다.

+ Recent posts