我试图理解这个来自Tcl文档的代码
typedef int Tcl_DriverOutputProc(
ClientData instanceData,
const char *buf,
int toWrite,
int *errorCodePtr);
Run Code Online (Sandbox Code Playgroud)
我知道typedef的目的是为现有类型分配替代名称,那么为什么需要将typedef int赋予函数?这怎么用?
Mik*_*our 16
我知道typedef的目的是为现有类型指定替代名称
究竟.函数具有类型,这将Tcl_DriverOutputProc
为此函数类型指定名称.函数类型本身就像一个缺少名称的函数编写:
int(ClientData, const char *, int, int *)
Run Code Online (Sandbox Code Playgroud)
并且,与函数声明一样,您可以根据需要包含参数的名称,或将其保留.
这怎么用?
您可以使用指向函数的指针来指定运行时的行为; 例如:
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"
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它允许您编写一个函数来处理TCL输出的某些方面,并告诉TCL使用该函数.