我想调用类型为foo(void * data)
的函数,其输入参数为struct变量。
我听说当输入格式为void类型时,它接受每种类型的输入变量类型。不过,我收到一条错误消息。
struct info{
int element;
};
struct info inserter_info;
inserter_info.element = 0;
inserter(inserter_info);
inserter()
原型为void * inserter(void * data)
。
我尝试过投射但是我也收到了错误消息。
答案 0 :(得分:1)
void *data
期待一个指针
下面:
struct info inserter_info;
inserter_info.element = 0;
inserter(inserter_info);
你没有传递指针,改为:
inserter(&inserter_info);
答案 1 :(得分:1)
它需要一个指针,但是你没有传递一个指针,如果inserter()
函数要在另一个线程中运行你需要在堆上分配结构,否则它将在线程时被释放启动。
struct info {
int element;
};
struct info *inserter_info;
inserter_info = malloc(sizeof(*inserter_info));
if (inserter_info == NULL)
abortThisOperation();
inserter_info->element = 0;
inserter(inserter_info);
你应该确保当线程完成工作时你将释放分配的指针。
如果该函数不会从另一个线程运行,那么就像这样传递结构的地址
struct info inserter_info;
inserter_info.element = 0;
inserter(&inserter_info);
就够了。