Chuẩn C cho biết, đối với định nghĩa hàm nếu người khai báo bao gồm danh sách định danh, các kiểu tham số sẽ được khai báo trong danh sách khai báo sau. Rõ ràng điều này tạo nên sự khác biệt.Khai báo các tham số bên ngoài người khai báo
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;
}
Ở đây int a, b; là danh sách khai báo cho các tham số. Sự khác biệt giữa hai định nghĩa này là biểu mẫu đầu tiên hoạt động làm tuyên bố mẫu thử buộc chuyển đổi các đối số của các cuộc gọi tiếp theo sang hàm, trong khi biểu mẫu thứ hai thì không.
Điều này có ý nghĩa gì đối với các lập trình viên và nó ảnh hưởng đến các mã trình biên dịch tạo ra?