프로그래밍 언어론 3-3-1강. 정적 스코프(Static Scope)

[프로그래밍 언어론]

2019. 10. 26. 14:30

 

[정적 스코프(Static scope)]

: 실행 시간에서의 조작 흐름과 관계 없이 컴파일 시간에 스코프 결정

 

 

[C언어에서의 정적 스코프]

: C언어에서 subroutine 입장시 지역변수 생성(Create), 전역변수 비활성화(deactivate, hidden) - 중복 변수명일시

                               퇴상시 지역변수 제거(Destroy), 전역변수 활성화(activate)

 

 

[정적 스코프의 언어별 발전]

1. Basic 초기

  : 지역, 전역의 구분 없이, 전역 하나만 존재 => 스코프 개념 없음(오직 한개의 스코프)

  : 변수 명시적 선언 X

 

2. Fortran90 초기

  : 지역, 전역 구분 시작하지만, 변수 명시적 선언은 선택사항(선언 안하면 현재 함수의 지역변수라 가정)

  : 지역 변수의 수명은 서브루틴의 단일 실행까지 ( = 재귀 사용 불가)

 

3. C, Algol

  : 지역변수 수명범위로 인해 재귀 사용불가를 save-ed 변수를 이용해 해결

  : C에서 static, Algol에서 own

  : 해당 save-ed를 변수에 붙이면 해당 변수는 프로그램 전체실행에서 살아 있다.

 

 

# C언어에서 변수 선언시 값 초기화 안하면 자동으로 0으로 초기화한다.