楼主:
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