범위 및 표시 영역
식별자의 “표시 영역”은 참조할 수 있는 프로그램의 부분인 해당 “범위”를 결정합니다. 식별자는 해당 “범위”에 포함된 프로그램의 부분에서만 표시됩니다(사용 가능). 해당 범위는 표시되는 파일, 함수, 블록 또는 함수 프로토타입으로 제한될 수 있습니다. 식별자의 범위는 이름을 사용할 수 있는 프로그램의 일부입니다. 이를 “어휘 범위”라고도 합니다. 범위에는 함수, 파일, 블록 및 함수 프로토타입의 네 가지 종류가 있습니다.
레이블을 제외한 모든 식별자에는 선언이 발생하는 수준에서 결정된 범위가 있습니다. 각 범위 종류에 대한 다음 규칙은 프로그램 내의 식별자의 표시 유형을 관리합니다.
파일 범위
파일 범위의 식별자에 대한 선언자 또는 형식 지정자는 블록 밖이나 매개 변수의 목록에 나타나고 선언 뒤의 변환 단위에 있는 어느 위치에서도 액세스할 수 있습니다. 파일 범위를 포함하는 식별자 이름은 “전역” 또는 “외부”라고도 합니다. 전역 ID의 범위는 정의 또는 선언 지점에서 시작되고 변환 단위의 끝에서 종료됩니다.
함수 범위
레이블은 함수 범위가 있는 유일한 종류의 식별자입니다. 레이블은 문에서 사용하여 암시적으로 선언됩니다. 레이블 이름은 함수 내에서 고유해야 합니다. 레이블 및 레이블 이름에 대한 자세한 내용은 goto 및 Labeled 문을 참조하세요.
차단 범위
블록 범위를 포함하는 식별자에 대한 선언자 또는 형식 지정자는 블록 안이나 함수 정의에 있는 정식 매개 변수 선언의 목록에 나타납니다. 선언 또는 정의 지점부터 해당 선언 또는 정의가 포함된 블록의 끝까지만 표시됩니다. 범위는 해당 블록 및 해당 블록에 중첩된 모든 블록으로 제한되며 연결된 블록을 닫는 중괄호에서 끝납니다. 이러한 식별자는 대개 "지역 변수" 라고 합니다.
함수 프로토타입 범위
함수 프로토타입 범위를 포함하는 식별자에 대한 선언자 또는 형식 지정자는 함수 프로토타입(함수 선언의 일부가 아님)의 매개 변수 선언 목록 내에 나타납니다. 해당 범위는 함수 선언자 끝에서 종료됩니다.
다른 소스 파일에서 변수를 화면에 표시하기에 적절한 선언은 스토리지 클래스에서 설명합니다. 하지만 static
스토리지 클래스 지정자를 사용하여 외부 수준에서 선언한 변수와 함수는 정의된 소스 파일 내에서만 표시됩니다. 다른 모든 함수는 전역적으로 표시됩니다.