Một lần nữa hôm nay với gõ lại ..con trỏ đến hàm, cấu trúc như tham số
Trong cấu trúc là con trỏ hàm, trong đó tôi muốn có thể làm việc với dữ liệu từ cấu trúc này, do đó con trỏ đến cấu trúc được đưa ra làm tham số.
Demo của vấn đề này
#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;
}
Nhưng tôi nhận được cảnh báo
.. \ src \ retyping.c: 31: 5: cảnh báo: truyền tham số 1 của 'mystruct.pCallback' từ loại con trỏ không tương thích .. \ src \ retyping.c: 31: 5: lưu ý: dự kiến 'struct tMYSTRUCTURE *' nhưng đối số thuộc loại 'struct tMYSTRUCTURE *'
dự kiến 'struct tMYSTRUCTURE *' nhưng là 'struct tMYSTRUCTURE *', vui nhộn!
bất kỳ ý tưởng nào để khắc phục sự cố?
Trong mã của bạn, không có thứ gì như 'struct tMYSTRUCTURE' **, đó là loại không đầy đủ. Tất cả những gì bạn có là một cấu trúc * ẩn danh * cũng xảy ra được gõ vào 'tMYSTRUCTURE'. Xem http://stackoverflow.com/questions/612328/difference-between-struct-and-typedef-struct-in-c/612350#612350. –