作者:
OPIV (Monitor)
2014-12-30 23:56:04有試過宣告一個函數a裡面定義一個函數b之後return *b,編譯有過,但是return回來的
還是b在a的stack裡的位址,而不是b本身的值
不知道要怎樣才能把函數內容儲存在heap裡面?
目前的程式大概像這樣:
void *a() {
int b(int c) {
printf("%d", c);
return 0;
};
return *b;
}
int main(int argc, char *argv[]) {
int (* func)(int c) = malloc(sizeof(func));
func = a();
return 0;
}
作者:
LPH66 (-6.2598534e+18f)
2014-12-30 23:57:00函式裡的函式基本上不通用, 你想達成什麼效果?
作者:
PkmX (阿貓)
2014-12-31 00:44:00先去翻一下一般C的程式是怎麼在memory space中擺放的吧?
作者:
CaptainH (Cannon)
2014-12-31 03:00:00函數內函數不在標準內,是gnu extension似乎沒提供類似閉包的功能
作者:
LPH66 (-6.2598534e+18f)
2014-12-31 07:54:00沒有閉包不過好像有 lexical scoping 的樣子達成的方法是個叫 trampoline 的技巧讓內層函式有外層的 sp
作者:
descent (「雄辯是銀,沉默是金」)
2014-12-31 09:35:00用 function object 可以達到你要的效果嗎?
作者:
kingofsdtw (ä¸èƒ½é–’下來!!)
2013-01-01 14:47:00struct 放heap?
作者: tubbysong (song) 2013-01-01 19:51:00
Google Object-Oriented Programming With ANSI-C pdf