C 저장소 클래스C Storage Classes

변수의 "저장소 클래스"는 항목에 "전역" 또는 "로컬" 수명을 사용할지 여부를 결정합니다.The "storage class" of a variable determines whether the item has a "global" or "local" lifetime. C에서는 "정적" 수명과 "자동" 수명을 호출합니다.C calls these two lifetimes "static" and "automatic." 프로그램 실행 전체에 전역 수명을 가진 항목이 존재하고 값을 갖습니다.An item with a global lifetime exists and has a value throughout the execution of the program. 모든 함수는 전역 수명을 갖습니다.All functions have global lifetimes.

정의된 블록에 실행 제어가 전달될 때마다 자동 변수 또는 로컬 수명을 가진 변수에 새 저장소가 할당됩니다.Automatic variables, or variables with local lifetimes, are allocated new storage each time execution control passes to the block in which they are defined. 실행이 반환될 때 변수는 더 이상 의미 있는 값을 갖지 않습니다.When execution returns, the variables no longer have meaningful values.

C에서는 다음과 같은 저장소 클래스 지정자를 제공합니다.C provides the following storage-class specifiers:

구문Syntax

storage-class-specifier:storage-class-specifier:
autoauto

registerregister

staticstatic

externextern

typedeftypedef

__declspec ( extended-decl-modifier-seq ) /* Microsoft 전용 */__declspec ( extended-decl-modifier-seq ) /* Microsoft Specific */

__declspec를 제외하고 선언에서 declaration-specifierstorage-class-specifier를 하나만 사용할 수 있습니다.Except for __declspec, you can use only one storage-class-specifier in the declaration-specifier in a declaration. 저장소 클래스 사양을 만들지 않으면 블록 안의 선언이 자동 개체를 만듭니다.If no storage-class specification is made, declarations within a block create automatic objects.

auto 또는 register 지정자를 사용하여 선언된 항목은 로컬 수명을 갖습니다.Items declared with the auto or register specifier have local lifetimes. static 또는 extern 지정자를 사용하여 선언된 항목은 전역 수명을 갖습니다.Items declared with the static or extern specifier have global lifetimes.

typedef__declspec는 다른 storage-class-specifier 터미널 4개와 의미 체계가 다르므로 따로 설명합니다.Since typedef and __declspec are semantically different from the other four storage-class-specifier terminals, they are discussed separately. typedef에 대한 자세한 내용은 Typedef 선언을 참조하세요.For specific information on typedef, see Typedef Declarations. __declspec에 대한 자세한 내용은 확장된 저장소 클래스 특성을 참조하세요.For specific information on __declspec, see Extended Storage-Class Attributes.

또한 소스 파일에서 변수 및 함수 선언의 배치가 저장소 클래스와 표시 유형에 영향을 줍니다.The placement of variable and function declarations within source files also affects storage class and visibility. 모든 함수 정의 밖의 선언은 "외부 수준"에 나타나며Declarations outside all function definitions are said to appear at the "external level." 함수 정의 안의 선언은 "내부 수준"에 나타납니다.Declarations within function definitions appear at the "internal level."

각 저장소 클래스 지정자의 정확한 의미는 두 가지 요인에 의해 결정됩니다.The exact meaning of each storage-class specifier depends on two factors:

참고 항목See Also

선언 및 형식Declarations and Types