다음을 통해 공유


함수 선언 구문

함수는 전역 함수이거나 클래스나 구조체의 멤버가 될 수 있습니다. 이러한 함수는 다음 시퀀스를 사용하여 선언됩니다.

[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] declarator [cv-qualifer] 
[exception-spec]
[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] [*|&] [ms-modifer] identifier 
( argument-list ) [cv-qualifer] [exception-spec]
  1. 선언 지정자. 지정자를 참조하십시오.

    • 클래스 내의 선택적 friend 지정자.

    • 선택적 저장소 클래스 지정자. 전역 함수의 경우 허용되는 저장소 클래스 지정자는 static 및 extern입니다. 클래스 멤버 함수의 경우 extern을 사용할 수 없습니다.

    • 선택적 함수 지정자. 전역 함수의 경우 허용되는 유일한 함수 지정자는 inline입니다. 클래스 멤버 함수의 경우 virtualinline을 사용할 수 있고 , 생성자의 경우explicit를 사용할 수 있습니다.

    • 반환 형식을 나타내는 형식 지정자(* 또는 &를 사용하여 포인터 또는 참조 형식을 수정).

  2. 선언자.

    • 반환 형식을 수정하는 선택적 포인터 또는 참조 연산자.

    • 호출 규칙을 지정하는 선택적 Microsoft 전용 한정자. Microsoft 전용 한정자를 참조하십시오.

    • 함수의 이름. 함수가 클래스 또는 구조체의 멤버인 경우 범위 결정 연산자를 사용하여 이름을 정규화할 수 있습니다.

    • **()**로 묶인 인수 선언 목록.

    • 선택적 const 또는 volatile 한정자. 이 컨텍스트에서 const는 클래스 멤버에 대해서만 사용할 수 있으며 함수가 클래스의 데이터 멤버를 수정하지 않음을 나타내는 데 사용합니다.

반환 형식이 함수 포인터인 경우 선언자 구문은 아래 설명과 같이 더 복잡해질 수 있습니다.

  1. 함수에서 throw하는 예외를 나타내는 선택적 예외 지정. 예외 지정을 참조하십시오.

그렇게 선언된 식별자의 형식은 지정된 인수 목록을 사용하며 선언 지정자가 가리키는 형식을 반환하는 const 또는 volatile 함수로 구성될 수 있습니다.

다음 예제에서는 간단한 함수 선언 두 가지를 보여 줍니다.

char *strchr( char *dest, char *src );
static int atoi( const char *ascnum ) const;

함수 포인터를 반환하는 함수 선언

함수 포인터 형식을 반환하는 함수를 선언할 경우 typedef를 사용하여 함수 포인터 형식에 대한 별칭을 선언하는 것이 좋습니다. 예

typedef int (*fp)(int);
fp myFunction(char* s); // function returning function pointer

다른 방법으로, 식별자(위 예제에서 fp)를 함수 이름 및 인수 목록으로 대체하여 함수 선언의 올바른 구문을 함수 포인터의 선언자 구문에서 추론할 수 있습니다. 예제는 다음과 같습니다.

int (*myFunction(char* s))(int);

앞의 선언은 위에서 typedef를 사용한 선언과 같습니다.

참고 항목

참조

함수 선언