저장소 클래스Storage Class

함수 정의의 저장소 클래스 지정자는 함수에 extern 또는 static 저장소 클래스를 제공합니다.The storage-class specifier in a function definition gives the function either extern or static storage class.

구문Syntax

function-definition:function-definition:
declaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statementdeclaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statement

/* attribute-seq는 Microsoft 전용임 //* *attribute-seq is Microsoft Specific */

declaration-specifiers:declaration-specifiers:
storage-class-specifier declaration-specifiers optstorage-class-specifier declaration-specifiers opt

type-specifier declaration-specifiers opttype-specifier declaration-specifiers opt

type-qualifier declaration-specifiers opttype-qualifier declaration-specifiers opt

storage-class-specifier: /* 함수 정의용 */storage-class-specifier: /* For function definitions */
externextern

staticstatic

함수 정의에 storage-class-specifier가 포함되지 않은 경우 저장소 클래스의 기본값은 extern입니다.If a function definition does not include a storage-class-specifier, the storage class defaults to extern. 함수를 명시적으로 extern으로 선언할 수 있지만 반드시 그렇게 할 필요는 없습니다.You can explicitly declare a function as extern, but it is not required.

함수 선언에 storage-class-specifier extern이 포함되어 있는 경우 식별자의 링크가 파일 범위를 포함하는 식별자의 모든 표시되는 선언의 링크와 동일합니다.If the declaration of a function contains the storage-class-specifier extern, the identifier has the same linkage as any visible declaration of the identifier with file scope. 파일 범위를 포함하는 표시되는 선언이 없는 경우 식별자에 외부 링크가 있습니다.If there is no visible declaration with file scope, the identifier has external linkage. 식별자에 파일 범위가 있으며 storage-class-specifier는 없는 경우 식별자에 외부 링크가 있습니다.If an identifier has file scope and no storage-class-specifier, the identifier has external linkage. 외부 링크는 식별자의 각 인스턴스가 동일한 개체 또는 함수를 표시함을 의미합니다.External linkage means that each instance of the identifier denotes the same object or function. 링크 및 파일 범위에 대한 자세한 내용은 수명, 범위, 표시 유형 및 링크를 참조하세요.See Lifetime, Scope, Visibility, and Linkage for more information about linkage and file scope.

extern이 아닌 저장소 클래스 지정자를 포함하는 블록 범위 함수 선언은 오류를 발생시킵니다.Block-scope function declarations with a storage-class specifier other than extern generate errors.

static 저장소 클래스를 포함하는 함수는 정의된 소스 파일에서만 볼 수 있습니다.A function with static storage class is visible only in the source file in which it is defined. 다른 모든 함수는 extern 저장소 클래스가 명시적으로 또는 암시적으로 제공된 경우 프로그램의 모든 소스 파일에서 표시됩니다.All other functions, whether they are given extern storage class explicitly or implicitly, are visible throughout all source files in the program. static 저장소 클래스가 필요한 경우 함수가 처음으로 선언된 경우 및 함수가 정의된 경우 선언되어야 합니다.If static storage class is desired, it must be declared on the first occurrence of a declaration (if any) of the function, and on the definition of the function.

Microsoft 전용Microsoft Specific

Microsoft 확장을 사용할 수 있을 때 함수 정의가 동일한 소스 파일에 있는 경우 및 정의가 명시적으로 static 저장소 클래스를 지정하는 경우 원래 저장소 클래스를 사용하지 않거나 extern 저장소 클래스를 사용하여 선언된 함수에 static 저장소 클래스가 지정됩니다.When the Microsoft extensions are enabled, a function originally declared without a storage class (or with extern storage class) is given static storage class if the function definition is in the same source file and if the definition explicitly specifies static storage class.

/Ze 컴파일러 옵션을 사용하여 컴파일할 때 extern 키워드를 사용하여 블록 내에서 선언된 함수가 전역으로 표시됩니다.When compiling with the /Ze compiler option, functions declared within a block using the extern keyword have global visibility. /Za를 사용하여 컴파일할 때에는 이것이 적용되지 않습니다.This is not true when compiling with /Za. 이 기능은 소스 코드의 이식성을 고려해야 하는 경우 사용할 수 없습니다.This feature should not be relied upon if portability of source code is a consideration.

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

C 함수 정의C Function Definitions