为结构分配内存

ant*_*009 0 c malloc pointers

gcc 4.4.4 c89

我不断得到一个"不能解除对不完整类型的解释".

但是,我确信我的结构类型完整.我返回Network_t实例,它是指向已分配内存的指针.我应该能够解除那种记忆.

非常感谢任何建议,

我在头文件中有这个:driver.h

typedef struct Network_t Network_t;
Network_t* create_network(int id);
Run Code Online (Sandbox Code Playgroud)

实现文件driver.c

#include "driver.h"

struct Network_t {
    int id;
};

Network_t* create_network(int id)
{
    Network_t *network = malloc(sizeof *network);

    if(network) {
        network->id = id;
    }
    return network;
}
Run Code Online (Sandbox Code Playgroud)

在我的main.c

#include "driver.h"

Network_t *network = NULL;
network = create_network(1);
printf("Network ID: [ %d ]\n", network->id); /* Cannot dereference pointer to incomplete type */
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 10

main.c你那里只有一个struct Network_t可见的前瞻声明.要从id指向struct Network_t您的指针访问,需要在取消引用它的位置显示结构的定义.

您可以将定义从中移动driver.cdriver.h.

  • 您可以提供一个访问`id`成员的函数. (2认同)