首页 > 代码库 > 头文件中结构体互相引用的问题

头文件中结构体互相引用的问题

先上代码看下错误的例子:

typedef struct _thread{    int       id;                        /* friendly id               */    pthread_t pthread;                   /* pointer to actual thread  */    thpool_handle_t thpool_p;            /* access to thpool          */} thread_t;/* Threadpool * threadpool has many threads, and he should to access each threads, threads pointer array to save all threads pointer */typedef struct _thpool{    thread_t**   threads;                  /* pointer to threads        */    volatile int num_threads_alive;      /* threads currently alive   */    volatile int num_threads_working;    /* threads currently working */    pthread_mutex_t  thcount_lock;       /* used for thread count etc */    jobqueue*  jobqueue_p;               /* pointer to the job queue  */} thpool_t, *thpool_handle_t;

编译提示:
./include/thread_pool.h:31:5: error: unknown type name ‘thpool_handle_t’

 

修改如下解决:

struct _thread;struct _thpool;typedef struct _thread thread_t;typedef struct _thpool thpool_t, *thpool_handle_t;typedef struct _thread{    int       id;                        /* friendly id               */    pthread_t pthread;                   /* pointer to actual thread  */    thpool_handle_t thpool_p;            /* access to thpool          */} thread_t;/* Threadpool * threadpool has many threads, and he should to access each threads, threads pointer array to save all threads pointer */typedef struct _thpool{    thread_t**   threads;                  /* pointer to threads        */    volatile int num_threads_alive;      /* threads currently alive   */    volatile int num_threads_working;    /* threads currently working */    pthread_mutex_t  thcount_lock;       /* used for thread count etc */    jobqueue*  jobqueue_p;               /* pointer to the job queue  */} thpool_t, *thpool_handle_t;

 

头文件中结构体互相引用的问题