我正在编写代码来连接外围设备和MCU开发板。外围设备配备了可供使用的驱动程序。我有以下表格:
在d_base.h中:
struct S1 {
void (*funcptr)(int x, int y);
};
在driver.c中:
#include "d_base.h"
#include "driver.h"
static struct S1 const* ptr;
在driver.h中,预编写的函数作为外围设备驱动程序的一部分。只要需要特定功能,这些函数就会引用ptr->funcptr
。例如:
#include "d_base.h"
ptr->funcptr(x,y);
由于该功能与我正在使用的硬件有关,因此该功能的实现由我来决定。
然后我在main.c中编写了一个函数,如下所示:
#include "driver.h"
void fun(int x, int y)
{
// do nothing
}
我的问题与将ptr->funcptr
功能与fun
相关联。每当调用ptr-> funcptr时,如何使编译器转到函数中?
感谢您的协助。
答案 0 :(得分:0)
您可能在struct S1
的某处,可以指定fun
:
#include <stdio.h>
#include <stdlib.h>
struct S1{
void (*funcptr)(int,int);
};
static struct S1 const* ptr;
void fun(int x, int y){
printf("Hello");
}
int main(){
struct S1 s;
s.funcptr = fun;
ptr=&s;
ptr->funcptr(0,0);
}
如果您无权访问struct S1
,可能会有动态生成它的API函数。