Nếu bạn có một số declarator x
trong khai T x
, sau đó T x(t1 p1, t2 p2)
nghĩa chức năng với params p1, p2, trở về cùng loại như declarator x đã có trước khi .
Dấu ngoặc đơn xung quanh người khai báo có nghĩa là áp dụng các công cụ sửa đổi bên trong dấu ngoặc đơn đầu tiên.
Trong trường hợp của bạn, không có công cụ sửa đổi nào bên trong dấu ngoặc đơn. Điều này có nghĩa là không cần chúng.
Nguyên mẫu hàm có nghĩa là Có một hàm ở đâu đó có chữ ký này và tên của nó là Blah.
Typedef với nguyên mẫu của hàm có nghĩa là Cho phép đặt tên blah thành chữ ký hàm. Điều này không ngụ ý rằng bất kỳ chức năng nào có chữ ký này đều tồn tại. Tên này có thể được sử dụng làm loại. Ví dụ:
typedef int xxx(int yyy);
xxx *func_ptr; // Declaration of a variable that is a pointer to a function.
xxx *func2(int p1); // Function that returns a pointer to a function.
Nguồn
2013-08-27 03:32:05
Bạn có thể tìm thấy [giải thích này] (http://c-faq.com/decl/spiral.anderson.html) hữu ích. – icktoofay
Bạn bỏ lỡ một '*', 'typedef int (* xxx) (int yyy);' định nghĩa một con trỏ hàm –
@AlterMann Không, nó không phải là mã của tôi. Tôi nghĩ rằng nó định nghĩa một con trỏ hàm, nhưng có vẻ như không, tôi không có ý tưởng .. – Sayakiss