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



这似乎是一个容易解决的问题,但我做错了什么。 我已经浏览了所有类似的线程,但没有找到任何可以解决我的问题的东西,所以任何帮助将不胜感激!

基本上:C 程序,我正在尝试创建一个缓冲区事件数组。

#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);
} 

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

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

有什么想法吗?:(

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

struct bufferevent 仅在 libevent 的公共标头中声明为不完整的类型;其内容对公共 API 的用户是隐藏的。 所有对缓冲区事件进行操作的 libevent 函数都有一个指向缓冲区事件的指针,所以这里你想要的是

struct bufferevent *bev[8];

进一步请注意,您不想在该声明上放置extern,否则您将在链接时收到未定义的符号错误。 如果仅在该文件中引用它,则应改用static。 否则,除了显示的文件中的 extern less 声明外,还应在应用程序的一个文件中有一个带有 extern 的声明。

相关内容

  • 没有找到相关文章

最新更新