[問題] 把函式儲存在 heap

看板C_and_CPP作者 (Monitor)時間9年前 (2014/12/30 23:56), 編輯推噓5(506)
留言11則, 8人參與, 最新討論串1/1
有試過宣告一個函數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; } -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.131.246 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1419954967.A.169.html

12/30 23:57, , 1F
函式裡的函式基本上不通用, 你想達成什麼效果?
12/30 23:57, 1F

12/31 00:44, , 2F
先去翻一下一般C的程式是怎麼在memory space中擺放的吧?
12/31 00:44, 2F

12/31 03:00, , 3F
函數內函數不在標準內,是gnu extension
12/31 03:00, 3F

12/31 03:01, , 4F
似乎沒提供類似閉包的功能
12/31 03:01, 4F

12/31 07:54, , 5F
沒有閉包不過好像有 lexical scoping 的樣子
12/31 07:54, 5F

12/31 07:55, , 6F
達成的方法是個叫 trampoline 的技巧讓內層函式有外層的 sp
12/31 07:55, 6F

12/31 09:35, , 7F
用 function object 可以達到你要的效果嗎?
12/31 09:35, 7F

01/01 14:47, , 8F
struct 放heap?
01/01 14:47, 8F

01/01 19:51, , 9F
Google Object-Oriented Programming With ANSI-C pdf
01/01 19:51, 9F

01/08 12:31, , 10F
return (void *)b; ?
01/08 12:31, 10F

02/01 04:44, , 11F
你只好先讓他輸出原始碼,編為DLL/so然後dlopen/dlsym
02/01 04:44, 11F
文章代碼(AID): #1KeiiN5f (C_and_CPP)