我正在尝试使用运行时提供的方法在c程序中设置一个全局可访问的回调函数。
到目前为止,我得到了以下信息:

principal.h
-----------

extern Callback globalCallback;

principal.c
-----------

struct Callback {
void (*doubleCallback)(double * speed);
};

some_function(void (*updateDetected)(double*)){
    globalCallback.doubleCallback = updateDetected;
}


other.c
-----------

#include "principal.h"

void another_function(){
    globalCallback.doubleCallback(&some_double);
}

这将给出一个错误,说明:未知类型名“Callback”
我试过几种方法,但都犯了各种错误。
如能提供任何帮助,我们将不胜感激。

最佳答案

extern Callback globalCallback;

改用这个:
extern struct Callback globalCallback;

在C语言中,当您只声明typedef时,需要Callback来使用struct Callback作为类型名。这与C++将声明为新类型的CC不同。
如果要为结构类型创建类型别名(我不建议这样做),可以执行以下操作:
typedef struct Callback Callback;

关于c - ansi c全局可访问的回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17173389/

10-09 17:19