什么是动态回调?

时间:2013-12-03 18:08:24

标签: c

我正在线上关注Learn C The Hard Way

在某一点上,作者谈到了对函数的“动态回调”。

有人可以解释一下究竟是什么原因,因为我没有得到它吗?

1 个答案:

答案 0 :(得分:2)

作者可能谈论的一件事是函数指针

function getTokens(void (*callback)(char *)) {
   char *c;
   while(true) {
       c = malloc(100 * sizeof(char));
       if(scanf("%s", c) != 1) {
           break;
       }
       callback(c);
   }
   calloc(c);
}

这里,调用函数callback,每个字符串从标准输入读取。

callback可以执行任何操作,并在运行时动态传递给getTokens

void printToken(char *c data) {
    printf("%s\n", data);
}

void ignoreToken(char *c) {
}

void (*tokenCallback)(char *) = (1 + 1 == 2) ? &printToken : &ignoreToken; //"dynamic"
getTokens(tokenCallback);