C Typedef - Incomplete Type

若如初见. 提交于 2019-11-27 21:37:40

Move the struct declaration to the header:

customer.h
typedef struct CustomerStruct
{
...
}
user295691

In C, the compiler needs to be able to figure out the size of any object that is referenced directly. The only way that the sizeof(CustomerNode) can be computed is for the definition of Customer to be available to the compiler when it is building customer_list.c.

The solution is to move the definition of the struct from customer.c to customer.h.

What you have is a forward declaration of Customer structure that you are trying to instantiate. This is not really allowed because compiler has no idea about the structure layout unless it sees it definition. So what you have to do is move your definition from the source file into a header.

David Fernandez

It seems that something like

typedef struct foo bar;

won't work without the definition in the header. But something like

typedef struct foo *baz;

will work, as long as you don't need to use baz->xxx in the header.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!