C 표준에 따르면 함수 정의의 경우 선언자에 식별자 목록이 포함되어있는 경우 의 경우 매개 변수 유형이 다음 선언 목록에 선언됩니다. 분명히 차이가 있습니다. 여기 선언자 외부의 매개 변수 선언
extern int max(int a, int b)
{
return a > b ? a : b;
}
extern int max(a, b)
int a, b;
{
return a > b ? a : b;
}
는 A, B에서 INT; 매개 변수에 대한 선언 목록입니다. 이 두 정의의 차이는 이고 첫 번째 형식은 을 프로토 타입 선언으로 사용하므로 두 번째 형식은 함수에 대한 후속 호출 인 의 인수를 강제로 변환합니다.
프로그래머에게 이것은 무엇을 의미하며 컴파일러가 생성하는 코드에 영향을 줍니까?