Tôi biết mục đích của typedef là gán tên thay thế cho các loại hiện có
Chính xác. Các hàm có kiểu, và điều này gán tên Tcl_DriverOutputProc
cho kiểu hàm này. Bản thân loại chức năng được viết giống như một hàm có tên bị thiếu:
int(ClientData, const char *, int, int *)
và, như với khai báo chức năng, bạn có thể bao gồm tên cho tham số, hoặc để chúng ra, như bạn chọn.
Cách này có thể được sử dụng?
Bạn có thể sử dụng con trỏ tới các hàm để chỉ định hành vi tại thời gian chạy; ví dụ:
typedef void function();
void hello() {printf("Hello\n");}
void goodbye() {printf("Goodbye\n");}
int main() {
function * pf = hello;
pf(); // prints "Hello"
pf = goodbye;
pg(); // prints "Goodbye"
}
Trong trường hợp này, nó cho phép bạn viết hàm để xử lý một số khía cạnh của đầu ra TCL và yêu cầu TCL sử dụng chức năng đó.
Nguồn
2013-04-17 10:30:03
Nó được sử dụng để khai báo [con trỏ chức năng] (http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work) trong TCL_CHANNELTYPE – alexrider
Bạn nghĩ gì về này (typedef int (* hello) (void);)? – MYMNeo