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.c到driver.h.