gpt4 book ai didi

c - 指向函数的指针,结构作为参数

转载 作者:太空狗 更新时间:2023-10-29 14:59:42 24 4
gpt4 key购买 nike

今天再次重新打字..

在结构中是指向函数的指针,在这个函数中我希望能够处理来自这个结构的数据,所以指向结构的指针作为参数给出。

这个问题的演示

#include <stdio.h>
#include <stdlib.h>

struct tMYSTRUCTURE;

typedef struct{
int myint;
void (* pCallback)(struct tMYSTRUCTURE *mystructure);
}tMYSTRUCTURE;


void hello(struct tMYSTRUCTURE *mystructure){
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
}

int main(void) {
tMYSTRUCTURE mystruct;
mystruct.pCallback = hello;

mystruct.pCallback(&mystruct);
return EXIT_SUCCESS;

}

但是我收到警告

..\src\retyping.c:31:5: warning: passing argument 1 of 'mystruct.pCallback' from incompatible pointer type ..\src\retyping.c:31:5: note: expected 'struct tMYSTRUCTURE *' but argument is of type 'struct tMYSTRUCTURE *'

预期为“struct tMYSTRUCTURE *”但实际上是“struct tMYSTRUCTURE *”,有趣!

知道如何解决吗?

最佳答案

问题是由 typedef 结构然后使用 struct 关键字和 typedef 的名称引起的。前向声明 structtypedef 解决了这个问题。

#include <stdio.h>
#include <stdlib.h>

struct tagMYSTRUCTURE;
typedef struct tagMYSTRUCTURE tMYSTRUCTURE;

struct tagMYSTRUCTURE {
int myint;
void (* pCallback)(tMYSTRUCTURE *mystructure);
};


void hello(tMYSTRUCTURE *mystructure){
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
}

int main(void) {
tMYSTRUCTURE mystruct;
mystruct.pCallback = hello;

mystruct.pCallback(&mystruct);
return EXIT_SUCCESS;

}

关于c - 指向函数的指针,结构作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com