Vâng, chúng ta có thể khai báo một con trỏ hàm mà không có một typedef, nhưng không có nó không phải là có thể sử dụng tên của một để làm điều đó.
typedef thường được sử dụng vì cú pháp để khai báo một con trỏ hàm là một baroque bit. Tuy nhiên, typedef là không cần thiết. Bạn có thể viết:
int (*ptr)(float);
tuyên bố ptr
như một con trỏ hàm để một chức năng chụp float
và trở int
- không typedef được tham gia. Nhưng một lần nữa, không có cú pháp nào cho phép bạn sử dụng tên myfunc
để thực hiện việc này.
Nguồn
2010-09-22 14:54:21
Bạn muốn có một con trỏ hàm chỉ có thể trỏ đến hàm delcared của riêng bạn? – wheaties
@wheaties Tôi muốn một con trỏ hàm đến một hàm có cùng chữ ký với myfunc –
Bạn có biết bạn có thể áp dụng 'typedef' cho các khai báo hàm để gõ vào kiểu của chúng không? 'typedef int myfunc (float); myfunc * ptrWithSameTypeAsMyFunc = 0; '? Hầu hết mọi người không nhận thức được điều này và nghĩ rằng họ cần cú pháp '(* foo)' xấu xí. –