2012-02-20 6 views

Trả lời

0

Bạn có thể muốn thử đặt giá trị này vào dấu ngoặc đơn: glesContext * glesContext.

0

Tôi không thực sự chắc chắn những gì mã của bạn đang cố gắng để làm, nhưng nếu bạn chỉ muốn làm cho nó biên dịch, hãy thử

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

Bạn cách chính xác làm một con trỏ hàm trong của bạn struct (vì vậy, rất nhiều người cho rằng, rất nhiều người làm cho nó sai).

Tuy nhiên, bạn đã đổi chỗ theo số drawFunc* trong định nghĩa chức năng của mình, đó là một lý do khiến trình biên dịch phàn nàn. Lý do khác là bạn có cùng số nhận dạng được sử dụng làm loại và biến. Bạn nên chọn các số nhận dạng khác nhau cho hai thứ khác nhau.

Sử dụng này để thay thế:

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

Một giải pháp là để thêm một con trỏ đến hoạt typedef như sau:

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 con trỏ chức năng có thể làm cho họ dễ dàng hơn để đối phó với. – dreamlax