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

时间:2013-06-12 15:29:21

标签: 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;

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

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

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

1 个答案:

答案 0 :(得分: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;
};