繁体   English   中英

结构数组-数组的元素类型不完整(在C中)

[英]Array of structs - Array has incomplete element type (in C)

这似乎是一个容易解决的问题,但是我做错了事。 我经历了所有类似的话题,没有找到能解决我问题的任何东西,因此,我们将不胜感激!

基本上:C程序,并且我正在尝试创建一个bufferevents数组。

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

extern struct bufferevent bev[8];

//Then, my accept functions -- well, one of them...
static void accept1(struct evconnlistener *listener,
    evutil_socket_t fd, struct sockaddr *address, int socklen,
    void *ctx) {
    /* A new connection was received on this port */
    struct event_base *base = evconnlistener_get_base(listener);
    bev[0] = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE);

    /* Callback for when (*bufevent, data READ, data WRITTEN, event OCCURRED, *void) */
    bufferevent_setcb(bev[0], read1, NULL, echo_event_cb, NULL);
} 

当我尝试编译(带有-levent时,我可能会添加)时,出现此错误:

src/mix/mix1.c:57:34: error: array type has incomplete element type

有任何想法吗? :(

注意:我正在main之外定义bufferevent,以使它们在我的代码中的任何位置都可以访问而无需传递它们。 我在该地区还有其他#define,所以我确定这与我建立它们的方式有关?

struct bufferevent仅在libevent的公共标头中声明为不完整类型; 它的内容对公共API的用户隐藏。 所有对bufferevents进行操作的libevent函数都使用一个指向 bufferevent的指针 ,因此,您想要的是

struct bufferevent *bev[8];

还要注意,您不想在该声明上加上extern ,否则在链接时会收到未定义的符号错误。 如果仅在该文件中引用过 ,则应该使用static 否则,除了显示的文件extern -less声明 ,您的应用程序文件还应有一个带有extern声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM