2013-06-12 62 views
0

我試圖在我的應用程序中實現一個線程池系統。我很喜歡每個線程都有一個指向我正在使用的線程池結構的指針。所以,基本上我有兩種類似於以下的結構:兩個結構互相包含時避免警告

typedef struct thread_pool { 
    /* some fields here */ 
    single_thread **tds; 
} thread_pool_t; 

typedef struct single_thread { 
    /* some fields here */ 
    thread_pool_t *tp; 
} single_thread_t; 

獨立於聲明的順序,編譯器會給出一個錯誤。我在第一個結構之前解決了聲明第二個結構,但是聲明瞭它是空的。現在我沒有得到任何錯誤,但我總是得到以下警告:

serv_inc/thrhandler.h:23:16: warning: useless storage class specifier in empty declaration [enabled by default] 

是否有任何方法可以避免此警告並獲得相同的結果?我做錯了,是否有更有效的解決方案來解決這個問題?

+1

這不能正常工作。沒有'struct'關鍵字,應該有前向聲明。請發佈[SSCCE](http://sscce.org/)。 –

回答

6

這個工作對我來說:

typedef struct thread_pool thread_pool_t; 
typedef struct single_thread single_thread_t; 

struct thread_pool 
{ 
    single_thread_t **tds; 
}; 

struct single_thread 
{ 
    thread_pool_t *tp; 
};