這可能是一個簡單的問題,但我似乎無法得到它的權利(甚至沒有足夠的使然)。考慮下面的例子:對象爲void *
Datum getDatum(...);
List* lappend(List *list, void *datum);
void my_fun(List **args){
lappend(*args, getDatum(...));
}
不幸的是,編譯器產生因爲內my_fun
lappend
呼叫爲參數2的指針不匹配的錯誤。我試圖把*
,如*(getDatum(...))
和&
,但都沒有幫助。
什麼是錯的代碼?
好的!所以基本上不可能把它放在一行中,對嗎? – navige 2013-03-26 08:52:29
你可以,但它很可能會在運行時崩潰 – stijn 2013-03-26 08:53:43
但是,該代碼或多或少是無用的,因爲它會附加一個局部變量的地址。數據一旦超出範圍,即該功能結束,該地址就會失效。 – unwind 2013-03-26 08:57:21