[英]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.