2012-02-20 5 views

Respuesta

0

Puede intentar poner esto entre paréntesis: glesContext * glesContext.

0

No estoy realmente seguro de lo que el código está tratando de hacer, pero si lo que desea es que se compile, tratar

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

Usted tienen la forma correcta de hacer un puntero de función en su struct (así que felicitaciones por eso, muchas personas lo malinterpretan).

Sin embargo, ha cambiado el drawFunc y el * en la definición de su función, que es una de las razones por las que el compilador se queja. La otra razón es que tiene el mismo identificador que se utiliza como el tipo y la variable. Debe elegir identificadores diferentes para las dos cosas diferentes.

Use este lugar:

void glesRegisterDrawFunction(glesContext *cntxt, void(*drawFunc)(glesContext*)); 
                 ^^^^^^^^^ 
                 note here 
5

Una solución es añadir un puntero a funcionar typedef de la siguiente manera: los punteros de función

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); 
+4

Typedeffing pueden hacerlos más fáciles de tratar. – dreamlax

Cuestiones relacionadas