incomplete type 'struct' error in C

耗尽温柔 提交于 2020-01-04 06:50:59

问题


I have this issue and can't see where the error is so I'm hoping someone can help address it. The error I get from compiling the source is:

client.c:15:54: error: invalid application of ‘sizeof’ to incomplete type ‘struct client’

I have the struct definition inside a header file - client.h:

#ifndef PW_CLIENT
#define PW_CLIENT

#include <event2/listener.h>
#include <event2/bufferevent.h>
#include <event2/buffer.h>

#include <arpa/inet.h>

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

struct client {
    int id;
    struct bufferevent *bev;

    struct client *prev;
    struct client *next;
};

struct client *client_head = NULL;

struct client* client_connect(struct bufferevent *bev);
#endif

And here is the source of client.c:

#include <event2/listener.h>
#include <event2/bufferevent.h>
#include <event2/buffer.h>

#include <arpa/inet.h>

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

struct client* client_connect(struct bufferevent *bev) {
    // Client info
    struct client *c = (struct client*)malloc(sizeof(struct client));
    if (c == NULL) {
        // error allocating memory
    } else {
    if (client_head == NULL) {
        // initialize list addresses
        c->prev = c->next = NULL;

        // set connection id
        c->id = 0;
    } else {
        // set list addresses
        client_head->next = c;
        c->prev = client_head;
        c->next = NULL;
        client_head = c;

        // set connection id
        c->id = (c->prev->id + 1);
    }

        // initialize user vars
        c->bev = bev;
    }

    return c;
}

Thanks!


回答1:


You have forgotten to #include "client.h", so the definition of struct client is not known in client.c, hence struct client denotes an incomplete type there.




回答2:


Sorry, but you need to include client.h, the compiler only compiles what he is told to...




回答3:


I don't see

#include "client.h"

in your .c file



来源:https://stackoverflow.com/questions/14023345/incomplete-type-struct-error-in-c

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