C 스토리지 클래스

변수의 "스토리지 클래스"는 항목에 "글로벌" 또는 "로컬" 수명을 사용할지 여부를 결정합니다. C는 이 두 가지 수명을 “정적” 및 “자동”이라고 합니다. 전역 수명을 가진 항목이 존재하며 프로그램 실행 중에 내내 값을 가집니다. 모든 함수는 전역 수명을 갖습니다.

정의된 블록에 실행 제어가 전달될 때마다 자동 변수 또는 로컬 수명을 가진 변수에 새 스토리지가 할당됩니다. 실행이 반환될 때 변수는 더 이상 의미 있는 값을 갖지 않습니다.

C에서는 다음과 같은 스토리지 클래스 지정자를 제공합니다.

구문

storage-class-specifier:
auto
register
static
extern
typedef
__declspec (extended-decl-modifier-seq) /* Microsoft 전용 */

__declspec를 제외하고 선언에서 declaration-specifierstorage-class-specifier를 하나만 사용할 수 있습니다. 스토리지 클래스 사양을 만들지 않으면 블록 안의 선언이 자동 개체를 만듭니다.

auto 또는 register 지정자를 사용하여 선언된 항목은 로컬 수명을 갖습니다. static 또는 extern 지정자를 사용하여 선언된 항목은 전역 수명을 갖습니다.

typedef__declspec는 다른 storage-class-specifier 터미널 4개와 의미 체계가 다르므로 따로 설명합니다. typedef에 대한 자세한 내용은 typedef 선언을 참조하세요. __declspec에 대한 자세한 내용은 확장된 스토리지 클래스 특성을 참조하세요.

또한 소스 파일에서 변수 및 함수 선언의 배치가 스토리지 클래스와 표시 유형에 영향을 줍니다. 모든 함수 정의 외부의 선언은 “외부 수준”에 표시됩니다. 함수 정의 내의 선언은 “내부 수준”에 표시됩니다.

각 스토리지 클래스 지정자의 정확한 의미는 두 가지 요인에 의해 결정됩니다.

  • 선언이 외부 또는 내부 수준에서 나타나는지 여부

  • 선언할 항목이 변수인지 함수인지 여부

외부 수준 선언에 대한 스토리지 클래스 지정자내부 수준 선언에 대한 스토리지 클래스 지정자에서는 종류별 선언의 storage-class-specifier 터미널을 설명하고 storage-class-specifier를 변수에서 생략할 경우 기본 동작을 설명합니다. 함수 선언이 있는 스토리지 클래스 지정자에서는 함수에 사용되는 스토리지 클래스 지정자를 설명합니다.

참조

선언 및 형식