thể trùng lặp:
C function syntax, parameter types declared after parameter listChức năng định nghĩa C
tôi thấy cú pháp sau đây để định nghĩa hàm trong "Expert C Programming"
int compare(s1, s2)
char * s1, *s2;
{
while (*s1++ == *s2) {
if (*s2++ == 0) return (0);
}
return (*--s1 - *s2);
}
Làm thế nào là định nghĩa trên hợp lệ? Nó biên dịch và chạy hoàn hảo mà không có bất kỳ lỗi nào.
Tôi cảm thấy thoải mái hơn với cú pháp sau đây để định nghĩa hàm
int compare(char * s1,char *s2)
{
while (*s1++ == *s2) {
if (*s2++ == 0) return (0);
}
return (*--s1 - *s2);
}
và không có nơi tôi đã nhìn thấy một trong những trình bày trong cuốn sách (Trong thời gian học ở trường đại học C của tôi hay ở nơi khác), có thể bất cứ ai hãy ném một số ánh sáng trên một cái được đưa ra trong cuốn sách.
Đó là cú pháp cũ và không dùng nữa cho khai báo hàm. Đôi khi được gọi là "phong cách K & R". – cnicutar
Đây là kiểu cũ nhưng vẫn được ngôn ngữ chấp nhận. BTW: Tôi không nghĩ rằng một cuốn sách "lập trình C chuyên gia" nên chứa 'return (0);' – wildplasser
20 năm trước, các trình biên dịch không thể xử lý cú pháp * giây * vẫn khá phổ biến. – Amadan