这是代码:
typedef struct {
void (*drawFunc) ( void* );
} glesContext;
void glesRegisterDrawFunction(glesContext *glesContext, void(drawFunc*)(glesContext*));
对于最后一行,我收到错误消息:“预期')'''''令牌”
为什么?
答案 0 :(得分:5)
你有在你的struct
中执行函数指针的正确方法(因此很多人都错了)。
然而,你在函数定义中交换了drawFunc
和*
,这是编译器抱怨的一个原因。另一个原因是您使用相同的标识符作为类型和变量。您应该为两个不同的事物选择不同的标识符。
请改用:
void glesRegisterDrawFunction(glesContext *cntxt, void(*drawFunc)(glesContext*));
^^^^^^^^^
note here
答案 1 :(得分:5)
一种解决方案是添加一个指向函数typedef的指针,如下所示:
typedef struct {
void (*drawFunc) ( void* );
} glesContext;
// define a pointer to function typedef
typedef void (*DRAW_FUNC)(glesContext*);
// now use this typedef to create the function declaration
void glesRegisterDrawFunction(glesContext *glesContext, DRAW_FUNC func);
答案 2 :(得分:0)
您可能想尝试将其放在括号中:glesContext * glesContext。
答案 3 :(得分:0)
我不确定你的代码是做什么的,但如果你只想让它编译,请尝试
void glesRegisterDrawFunction(glesContext *glesContext, void (*drawFunc)(glesContext*));