[英]Which parts of the Windows API are not accessible from ANSI C code?
[英]ansi c globally accessible callback
我正在尝试使用运行时提供的方法在ac程序中设置可全局访问的回调函数。
到目前为止,我有以下几点:
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);
}
这给出了一个错误说明:未知类型名称“回调”
我尝试了几种方法,并遇到了各种错误。
您可以提供的任何帮助将不胜感激。
您有两个错误:第一个错误是您没有在每个需要的源文件中定义结构。 将结构的定义从principal.c
源文件移动到principal.h
头文件。
另一个是您没有定义Callback
类型,而是该名称的结构。 这意味着在声明和定义globalCallback
变量时必须使用struct
关键字。
extern Callback globalCallback;
使用此代替:
extern struct Callback globalCallback;
在C语言中,仅声明struct Callback
时,需要typedef
才能将Callback
用作类型名称。 这与C ++不同,后者将Callback
声明为新类型。
如果要为结构类型创建类型别名(不建议这样做),则可以执行以下操作:
typedef struct Callback Callback;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.