여기서 다음과 같이 매개변수 이름을 생략하거나 스토리지 지정자(storage specifier)인 extern1을 붙여도 된다.
extern bool leapyear(unsigned);
선언문은 반드시 컴파일러에게 인수 타입과 리턴 타입을 알려 주도록 작성해야 한다. 이 함수의 프로토타입도 unsigned 타입을 받아서 bool 타입을 리턴한다고 명시했다.
void 키워드 사용과 관련해서 다음과 같은 특별한 두 관례가 있다.
• 매개변수 없이 함수를 호출한다면 매개변수 목록 자리에 void를 적는다. 이 책의 첫 번째 예제인 예제 1-1에 나온 main처럼 말이다.
• 함수에 리턴 값이 없다면 리턴 타입을 void로 지정한다. 가령 앞에서 본 swap_double이 그랬다.
이렇게 프로토타입을 적어 주면 컴파일러가 그 함수의 호출문을 처리하는 데 도움된다. 호출문에서 함수가 받을 매개변수에 대한 정보를 알 수 있기 때문이다. 예를 들어 다음 코드를 보자.
extern double fbar(double); ... double fbar2 = fbar(2)/2;
1 extern 키워드에 대해서는 13.2절에서 자세히 설명한다.