当两个结构相互包含时,避免发出警告

Zag*_*rax 0 c structure

我正在尝试在我的应用程序中实现一个线程池系统.我希望每个线程都有一个指向我正在使用的线程池结构的指针.所以,基本上我有两个类似于以下的结构:

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;
Run Code Online (Sandbox Code Playgroud)

独立于声明的顺序,编译器将给出错误.我解决了在第一个结构之前声明第二个结构,但声明它是空的.现在我没有收到任何错误,但我总是得到以下警告:

serv_inc/thrhandler.h:23:16: warning: useless storage class specifier in empty declaration [enabled by default]
Run Code Online (Sandbox Code Playgroud)

有没有办法避免这种警告并取得同样的结果?我做错了,是否有更有效的解决方案来解决这个问题?

ctn*_*ctn 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;
};
Run Code Online (Sandbox Code Playgroud)