C 함수 정의

함수 정의는 함수의 이름, 받아야 하는 매개 변수의 형식과 개수 및 반환 형식을 지정합니다. 함수 정의는 지역 변수의 선언과 함수의 기능을 결정하는 문이 있는 함수 본문도 포함합니다.

구문

translation-unit:
external-declaration

translation-unit external-declaration

external-declaration: /* 외부(파일) 범위에만 허용됨 */
function-definition

declaration

function-definition: /* 여기서 Declarator는 함수 선언자입니다. */
declaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statement

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

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

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

type-specifier declaration-specifiers opt

type-qualifier declaration-specifiers opt

declaration-list:
declaration

declaration-list declaration

declarator:
pointer optdirect-declarator

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

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

정의의 매개 변수 목록에서는 다음 구문을 사용합니다.

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

parameter-list , ...

parameter-list:
parameter-declaration

parameter-list , parameter-declaration

parameter-declaration:
declaration-specifiers declarator

declaration-specifiers abstract declarator opt

이전 스타일의 함수 정의에 있는 매개 변수 목록에서는 다음 구문을 사용합니다.

identifier-list: /* 사용되지 않는 스타일의 함수 정의 및 선언에 사용됨 */
identifier

identifier-list , identifier

함수 본문에 대한 구문은 다음과 같습니다.

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

함수 선언을 수정할 수 있는 유일한 저장소 클래스 지정자는 externstatic입니다. extern 지정자는 다른 파일에서 함수를 참조할 수 있음을 나타냅니다. 즉, 함수 이름이 링커로 내보내집니다. static 지정자는 다른 파일에서 함수를 참조할 수 없음을 나타냅니다. 즉, 이름이 링커에 의해 내보내지지 않습니다. 저장소 클래스가 함수 정의에 없을 경우 extern으로 간주됩니다. 어떤 경우이든 함수는 정의 지점에서 파일의 끝까지 항상 표시됩니다.

선택적 declaration-specifiers 및 필수 declarator는 함께 함수의 반환 형식 및 이름을 지정합니다. declarator는 함수를 명명하는 식별자와 함수 이름 뒤에 나오는 괄호의 조합입니다. 선택적 attribute-seq 비터미널은 함수 특성에 정의된 Microsoft 고유의 기능입니다.

declarator 구문의 direct-declarator는 정의될 함수의 이름과 매개 변수의 식별자를 지정합니다. direct-declaratorparameter-type-list가 포함된 경우 목록은 모든 매개 변수의 형식을 지정합니다. 이러한 선언자는 이후의 함수 호출을 위해 함수 프로토타입의 역할도 합니다.

함수 정의의 declaration-list에 있는 declaration에는 register가 아닌 storage-class-specifier가 포함될 수 없습니다. register 저장소 클래스가 int 형식의 값에 지정된 경우에만 declaration-specifiers 구문에서 type-specifier를 생략할 수 있습니다.

compound-statement는 지역 변수 선언, 외부에서 선언된 항목에 대한 참조 및 문이 포함된 함수 본문입니다.

함수 특성, 저장소 클래스, 반환 형식, 매개 변수함수 본문 섹션에서는 함수 정의의 구성 요소에 대해 자세히 설명합니다.

참고 항목

함수