我有一个存储线程结构的队列
typedef struct __threaddesc
{
int threadid;
char *threadstack;
void *threadfunc;
ucontext_t threadcontext;
} threaddesc;
函数create_node(void *data)
返回定义如下的队列条目结构:
struct queue_entry {
void *data;
STAILQ_ENTRY(queue_entry) entries;
};
当我致电*node = create_node(&threaddesc_pointer)
时,如何访问threaddesc
的成员?
我尝试了以下操作,但不起作用:
printf("%d\n", node->data->threadid)
我收到此错误:请求成员“ threadid”使用的不是结构体或联合体
答案 0 :(得分:1)
data
的类型为void *
,您需要将其强制转换为正确的指针类型(假设它引用了该类型的有效对象)。
printf("%d\n", node->data->threadid);
---->
printf("%d\n", ((threaddesc *)(node->data))->threadid);