ожидается ")" перед "*" токеном с указателем на функцию - PullRequest
6 голосов
/ 20 февраля 2012

вот код:

typedef struct {
    void (*drawFunc) ( void* );
} glesContext;

void glesRegisterDrawFunction(glesContext *glesContext, void(drawFunc*)(glesContext*));

Для этой последней строки я получаю сообщение об ошибке: «Ожидается») перед «*» токеном

почему

Ответы [ 4 ]

5 голосов
/ 20 февраля 2012

Одним из решений является добавление указателя на функцию 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);
5 голосов
/ 20 февраля 2012

У вас есть правильный способ сделать указатель на функцию в вашем struct (спасибо за это, так много людей ошибаются).

И все же вы поменяли местами drawFunc и * в определении функции, что является одной из причин, по которой компилятор жалуется. Другая причина в том, что вы используете тот же идентификатор, что и тип, и переменную. Вы должны выбрать разные идентификаторы для двух разных вещей.

Используйте это вместо:

void glesRegisterDrawFunction(glesContext *cntxt, void(*drawFunc)(glesContext*));
                                                       ^^^^^^^^^
                                                       note here
0 голосов
/ 20 февраля 2012

Я не совсем уверен, что ваш код пытается сделать, но если вы хотите просто скомпилировать его, попробуйте

void glesRegisterDrawFunction(glesContext *glesContext, void (*drawFunc)(glesContext*));
0 голосов
/ 20 февраля 2012

Вы можете попробовать поместить это в скобки: glesContext * glesContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...