기능시제품
Function prototype컴퓨터 프로그래밍에서 함수 프로토타입이나 함수 인터페이스는 함수의 이름과 형식 서명(성, 매개변수의 데이터 유형, 반환 유형)을 명시하지만 함수 본체는 생략하는 함수의 선언이다. 함수 정의는 함수가 수행하는 방식("이행")을 명시하지만 함수 프로토타입은 인터페이스, 즉 어떤 데이터 유형이 들어가고 나오는지를 명시할 뿐이다. "기능 프로토타입"이라는 용어는 헤더 파일에 기능의 선언을 전진 배치하면 프로그램을 변환 단위로, 즉 컴파일러가 객체 파일로 별도로 변환할 수 있는 부분으로 분할하여 링크에 의해 실행 가능한 또는 실행 가능한 것으로 결합할 수 있는 프로그래밍 언어 C와 C++의 맥락에서 특히 사용된다. 도서관
프로토타입에서 매개변수 이름은 선택사항이지만(그리고 C/C++에서는 기능 프로토타입 범위를 가지며, 이는 해당 범위가 프로토타입의 끝에서 끝나는 것을 의미한다), 이 유형은 항상성을 제외한 모든 수식어(예: 포인터 또는 항상 매개변수에 대한 참조인 경우)와 함께 필요하다.
객체 지향 프로그래밍에서 인터페이스와 추상적 방법은 거의 동일한 목적을 제공한다.
예
다음 기능 프로토타입을 고려하십시오.
공허하게 하다 합계( 인트로 a, 인트로 b );
OR
공허하게 하다 합계( 인트로, 인트로 );
기능 프로토타입에는 기능서명, 기능명, 리턴유형 및 액세스 지정자가 포함된다. 이 경우 함수의 이름은 "Sum"이다. 함수 서명은 매개변수 수와 매개변수 유형을 정의한다. 반송형은 "void"이다. 이것은 함수가 어떤 값도 반환하지 않는다는 것을 의미한다. 첫 번째 예제의 매개 변수 이름은 선택 사항이라는 점에 유의하십시오.
사용하다
C의 초기 버전에서는 함수가 이전에 선언되지 않았고 그 이름이 왼쪽 괄호 뒤에 나오는 표현에서 발생한 경우, 함수를 반환하는 함수로 암묵적으로 선언되었다. int
그리고 그 논쟁에 대해서는 아무 것도 상정되지 않았다. 이 경우 컴파일러는 인수의 수와 유형에 대한 컴파일 시간 유효성 검사를 수행할 수 없다. C99 표준은 프로토타입을 사용해야 한다.
마를 뜨다 MyFunction ( 인트로 a ); /* 기능 프로토타입 */ #include <stdio.h> #include <limits.h> 인트로 본래의( 공허하게 하다 ) { 설탕을 넣다( MyFunction( -1 ) ); /* 올바른 형식의 통화 */ 설탕을 넣다( MyFunction( 1.5 ) ); /* 타입 불일치로 인해 컴파일러에서 경고 생성 */ 설탕을 넣다( MyFunction("IncorrectArgType") ); /* 컴파일러에서 경고 발생 */ 설탕을 넣다( MyFunction() ); /* 컴파일러에서 오류 발생 너무 적은 인수 */ 인트로 하나=1; 설탕을 넣다( MyFunction( INT_MAX + 하나 ) ); /* 최대 정수에 1을 추가하더라도 /*는 컴파일 시 감지할 수 없는 오류 */ 돌아오다 0; } 마를 뜨다 MyFunction( 인트로 n ) /* 함수 정의 */ { 만일 (n > 0) 돌아오다 '>'; 만일 (n < 0) 돌아오다 '<'; 돌아오다 '='; }
함수 MyFunction은 정수 인수로 호출될 것으로 예상한다. 함수 프로토타입을 포함하면 함수가 하나의 정수 인수를 사용한다는 것을 컴파일러에 알리고 잘못 지정된 호출을 수신하도록 컴파일러를 활성화한다.
라이브러리 인터페이스 만들기
기능 프로토타입을 헤더 파일에 배치하면 라이브러리의 인터페이스를 지정할 수 있다.
계급선언
C++에서는 기능 프로토타입도 클래스 정의에서 사용된다.
참고 항목
참조
- Kernighan, Brian W.; Ritchie Afree, Dennis M. (1988). The C Programming Language (2nd ed.). Upper Saddle River, NJ: Prentice Hall PTR. ISBN 0-13-110362-8.