【发布时间】:2014-07-28 14:55:48
【问题描述】:
我想要完成的事情:我想在 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' : 非法将此类型用作表达式 见 myStruct 的声明
有没有办法让 VC 接受我的预期构造?
【问题讨论】:
-
visual-c++标签真的合适吗? -
我添加它是因为Visual编译器抛出错误并且在标签C的解释中提到了。
-
C 但只有visual-c++标签存在,没有visual-c标签。如果它存在,我会使用visual-c。
标签: c visual-c++ struct typedef forward-declaration