Trong một trong các tệp nguồn dự án của tôi, tôi đã tìm thấy định nghĩa hàm C này:
int (foo) (int *bar)
{
return foo (bar);
}
Lưu ý: không có dấu hoa thị bên cạnh foo
, vì vậy đây không phải là con trỏ hàm. Hoặc là nó? Điều gì đang xảy ra ở đây với cuộc gọi đệ quy?
a(b);
gì? Khai báo b
như là một biến của loại a
? Hoặc một cuộc gọi để hoạt động a
với đối số b
? Sự khác biệt là cú pháp và bạn không thể biết cách nào để phân tích cú pháp mà không cần tra cứu thông tin khai báo a
; tức là các hàm postfix gọi các dấu ngoặc đơn hoặc các dấu ngoặc đơn tùy chọn xung quanh một bộ khai báo.