이것은 C 함수를 작성하는 구식의 오래된 방법입니다.
C 조의 조상 언어에는 유형이 없습니다. 모든 변수에는 기계어가 포함되어 있습니다. seminal book about C이 (브라이언 커니 핸과 데니스 리치가) 변수 선언 닮은 형태의 유형을 추가 한의 저자에서 "K & RC"로 알려진
main(u, _, a) {
/* ... some code ... */
}
C as it used to be를, 그리고 : 그래서 함수 정의는 다음과 같이 시작하는 것입니다 함수 매개 변수 목록과 함수 코드 사이에있었습니다. 일종 int
& 인 경우 K R에 C
int main(u, _, a)
int u;
int _;
char *a;
{
/* ... some code ... */
}
은 다음 여러 곳에서 생략 할 수있다. 함수 매개 변수의 경우 유형 선언 행을 모두 생략 할 수 있습니다.
int main(u, _, a)
char *a;
{
/* ... some code ... */
}
ANSI C은 1989 년에 표준화와 주요 혁신 중 하나는 함수 프로토 타입이었다. 적절한 ANSI C에서는 사용하기 전에 모든 함수를 선언하고 모든 인수의 유형을 선언합니다.
int main(int u, int _, char *a)
{
/* ... some code ... */
}
컴파일러는 여전히 레거시 코드 용 이전 양식을 지원합니다. (그들이 1989 C 표준을 준수한다면, 그들은해야만합니다.) 20 년이 넘게 지나간 레거시 코드는별로 없기 때문에 그러한 코드를 자주 찾을 수 없습니다.
(이
main
에 대한 올바른 형식이 아닙니다. 나는 GCC 그것에 대해 경고합니다 생각하지만 경고 설정을 설정해야 할 수도 있습니다.)
은 사전 C89 스타일의 기능처럼 보인다. – chux
답변을 얻지 못하는 재미있는 사실을 추가하려면 : 16 비트 부팅 프로그램을 작성할 때이 스타일의 함수 선언을 사용해야했습니다. gcc는 16 비트로 컴파일되지 않으므로 ANSI를 지원하지 않는 bcc (Bruce의 C 컴파일러)를 사용해야했습니다. 그래서 당신은 실제로 일부 분야 에서이 물건을 실행할 수 있습니다! – Guido