gpt4 book ai didi

c - 如何正确转发声明 typedef 结构

转载 作者:行者123 更新时间:2023-11-30 15:31:12 25 4
gpt4 key购买 nike

我想要实现的目标:我想在 typedef 结构内部使用 typedef 函数指针,其中函数指针采用结构指针作为参数(即类似于“对象方法”,它采用 self -对“对象”的引用)。

我有这个 C 代码(经过简化,希望不会过于简化):

typedef struct MYSTRUCT myStruct;

typedef void (*getSomething)(myStruct*);

typedef struct MYSTRUCT {
getSomething get_something;
};

void get_property() {
myStruct *structure = NULL;
}

所以我认为我正在做的是:向前声明结构,在函数指针typedef中使用该声明,然后使用typedef的函数指针声明实际的结构。

此代码在 Linux 上使用 intel 编译器进行编译(并且似乎执行了预期的操作),但 Visual 编译器抛出错误:

error C2275: 'myStruct' : illegal use of this type as an expression see declaration of myStruct

有没有办法让 VC 接受我想要的构造?

最佳答案

typedef struct MYSTRUCT {
getSomething get_something;
};

应该是

struct MYSTRUCT {
getSomething get_something;
};

关于c - 如何正确转发声明 typedef 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24998003/

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