簡體   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