0

这可能是一个简单的问题,但我似乎无法正确回答(即使谷歌搜索不够)。考虑以下示例:

Datum getDatum(...);
List* lappend(List *list, void *datum);

void my_fun(List **args){
   lappend(*args, getDatum(...));
}

不幸的是,编译器产生错误,因为参数 2 的指针不匹配 at lappendcall within my_fun。我试图将 a *, like 放入*(getDatum(...))和 an&但两者都没有帮助。

该代码有什么问题?

4

2 回答 2

2

您不能将 like 值转换为, 或等Datum指针。如果你将 getDatum 更改为void*Datum**(getDatum(...))

Datum* getDatum(...);

它应该可以编译,但我建议您阅读指针等内容。还要知道,如果您使用 malloc() 在某处分配 Datum,则应该有相应的 free() 调用,如果您将所有内容都放在一个无效*列表。

于 2013-03-26T08:51:16.523 回答
1

你不能这样做,因为返回类型getDatumis Datum

你能做的是,

void my_fun(List **args){
   Datum data = getDatum();
   lappend(*args, (void *)&data);
}
于 2013-03-26T08:50:54.883 回答