C 함수 정의C Function Definitions

함수 정의는 함수의 이름, 받아야 하는 매개 변수의 형식과 개수 및 반환 형식을 지정합니다.A function definition specifies the name of the function, the types and number of parameters it expects to receive, and its return type. 함수 정의는 지역 변수의 선언과 함수의 기능을 결정하는 문이 있는 함수 본문도 포함합니다.A function definition also includes a function body with the declarations of its local variables, and the statements that determine what the function does.

구문Syntax

translation-unit:translation-unit:
external-declarationexternal-declaration

translation-unit external-declarationtranslation-unit external-declaration

external-declaration: /* 외부(파일) 범위에만 허용됨 */external-declaration: /* Allowed only at external (file) scope */
function-definitionfunction-definition

declaration

function-definition: /* 여기서 Declarator는 함수 선언자입니다. */function-definition: /* Declarator here is the function declarator */
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 */

프로토타입 매개 변수인 경우:Prototype parameters are:

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

declaration-list:declaration-list:
declarationdeclaration

declaration-list declarationdeclaration-list declaration

declarator:declarator:
pointer optdirect-declaratorpointer optdirect-declarator

direct-declarator: /* 함수 선언자 */direct-declarator: /* A function declarator */
direct-declarator ( parameter-type-list ) /* 새로운 스타일의 선언자 */direct-declarator ( parameter-type-list ) /* New-style declarator */

direct-declarator ( identifier-list opt) /* 사용되지 않는 스타일의 선언자 */direct-declarator ( identifier-list opt) /* Obsolete-style declarator */

정의의 매개 변수 목록에서는 다음 구문을 사용합니다.The parameter list in a definition uses this syntax:

parameter-type-list: /* 매개 변수 목록 */parameter-type-list: /* The parameter list */
parameter-listparameter-list

parameter-list , ...parameter-list , ...

parameter-list:parameter-list:
parameter-declarationparameter-declaration

parameter-list , parameter-declarationparameter-list , parameter-declaration

parameter-declaration:parameter-declaration:
declaration-specifiers declaratordeclaration-specifiers declarator

declaration-specifiers abstract declarator optdeclaration-specifiers abstract declarator opt

이전 스타일의 함수 정의에 있는 매개 변수 목록에서는 다음 구문을 사용합니다.The parameter list in an old-style function definition uses this syntax:

identifier-list: /* 사용되지 않는 스타일의 함수 정의 및 선언에 사용됨 */identifier-list: /* Used in obsolete-style function definitions and declarations */
identifieridentifier

identifier-list , identifieridentifier-list , identifier

함수 본문에 대한 구문은 다음과 같습니다.The syntax for the function body is:

compound-statement: /* 함수 본문 */compound-statement: /* The function body */
{ declaration-list optstatement-list opt}{ declaration-list optstatement-list opt}

함수 선언을 수정할 수 있는 유일한 저장소 클래스 지정자는 externstatic입니다.The only storage-class specifiers that can modify a function declaration are extern and static. extern 지정자는 다른 파일에서 함수를 참조할 수 있음을 나타냅니다. 즉, 함수 이름이 링커로 내보내집니다.The extern specifier signifies that the function can be referenced from other files; that is, the function name is exported to the linker. static 지정자는 다른 파일에서 함수를 참조할 수 없음을 나타냅니다. 즉, 이름이 링커에 의해 내보내지지 않습니다.The static specifier signifies that the function cannot be referenced from other files; that is, the name is not exported by the linker. 저장소 클래스가 함수 정의에 없을 경우 extern으로 간주됩니다.If no storage class appears in a function definition, extern is assumed. 어떤 경우이든 함수는 정의 지점에서 파일의 끝까지 항상 표시됩니다.In any case, the function is always visible from the definition point to the end of the file.

선택적 declaration-specifiers 및 필수 declarator는 함께 함수의 반환 형식 및 이름을 지정합니다.The optional declaration-specifiers and mandatory declarator together specify the function's return type and name. declarator는 함수를 명명하는 식별자와 함수 이름 뒤에 나오는 괄호의 조합입니다.The declarator is a combination of the identifier that names the function and the parentheses following the function name. 선택적 attribute-seq 비터미널은 함수 특성에 정의된 Microsoft 고유의 기능입니다.The optional attribute-seq nonterminal is a Microsoft-specific feature defined in Function Attributes.

declarator 구문의 direct-declarator는 정의될 함수의 이름과 매개 변수의 식별자를 지정합니다.The direct-declarator (in the declarator syntax) specifies the name of the function being defined and the identifiers of its parameters. direct-declaratorparameter-type-list가 포함된 경우 목록은 모든 매개 변수의 형식을 지정합니다.If the direct-declarator includes a parameter-type-list, the list specifies the types of all the parameters. 이러한 선언자는 이후의 함수 호출을 위해 함수 프로토타입의 역할도 합니다.Such a declarator also serves as a function prototype for later calls to the function.

함수 정의의 declaration-list에 있는 declaration에는 register가 아닌 storage-class-specifier가 포함될 수 없습니다.A declaration in the declaration-list in function definitions cannot contain a storage-class-specifier other than register. register 저장소 클래스가 int 형식의 값에 지정된 경우에만 declaration-specifiers 구문에서 type-specifier를 생략할 수 있습니다.The type-specifier in the declaration-specifiers syntax can be omitted only if the register storage class is specified for a value of int type.

compound-statement는 지역 변수 선언, 외부에서 선언된 항목에 대한 참조 및 문이 포함된 함수 본문입니다.The compound-statement is the function body containing local variable declarations, references to externally declared items, and statements.

함수 특성, 저장소 클래스, 반환 형식, 매개 변수함수 본문 섹션에서는 함수 정의의 구성 요소에 대해 자세히 설명합니다.The sections Function Attributes, Storage Class, Return Type, Parameters, and Function Body describe the components of the function definition in detail.

참고 항목See Also

함수Functions