调用C函数将2个结构指针作为参数传递

时间:2015-03-29 17:02:13

标签: c pointers struct types

我在尝试调用函数时遇到问题,我将指针传递给两个结构体。

请有人解释为什么我不能这样做......

// in types.h

typedef struct {

    uint16_t size;
    uint16_t width;
    uint16_t height;
    void (*fn_init)(void);

} display_t, *display_ptr;

typedef struct {

    uint16_t size;
    const display_ptr display;

} context_t, *context_ptr;

// in main.c

void init_context(context_ptr context, const display_ptr display) {
    context->size = sizeof(context_t);
    context->display = display;
}

const display_t g_display= {
    0,
    400,
    800,
    NULL
};

context_t g_context;

void main(void) {

    // other code here...

    init_context(&g_context, &g_display);

} 

当我调用init_context函数时,出现以下错误:

"argument of type "display_t const *" is incompatible with parameter of type struct <unnamed> *"

但是,如果我将init_context的声明更改为如下:

void init_context(context_ptr context, const display_t *display);

有效!

我缺少什么或不理解?

提前致谢! 千电子伏

0 个答案:

没有答案