C中的不完整类型'struct'错误

时间:2012-12-24 15:53:02

标签: c pointers struct

我有这个问题,看不出错误在哪里,所以我希望有人可以帮忙解决它。我从编译源代码得到的错误是:

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

我在头文件中有结构定义 - 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

这是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;
}

谢谢!

3 个答案:

答案 0 :(得分:6)

您忘记了#include "client.h",因此struct client中未知client.c的定义,因此struct client表示不完整的类型。

答案 1 :(得分:2)

很抱歉,但是你需要包含client.h,编译器只会编译他被告知的内容......

答案 2 :(得分:0)

我没有看到

#include "client.h"
你的.c文件中的