繁体   English   中英

ansi c全局可访问的回调

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM