头文件中结构体互相引用的问题
Posted Magnum Programm Life
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了头文件中结构体互相引用的问题相关的知识,希望对你有一定的参考价值。
先上代码看下错误的例子:
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;
以上是关于头文件中结构体互相引用的问题的主要内容,如果未能解决你的问题,请参考以下文章