我正在尝试使用运行时提供的方法在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/