看板 C_and_CPP 關於我們 聯絡資訊
有試過宣告一個函數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
LPH66: 函式裡的函式基本上不通用, 你想達成什麼效果? 12/30 23:57
PkmX: 先去翻一下一般C的程式是怎麼在memory space中擺放的吧? 12/31 00:44
CaptainH: 函數內函數不在標準內,是gnu extension 12/31 03:00
CaptainH: 似乎沒提供類似閉包的功能 12/31 03:01
LPH66: 沒有閉包不過好像有 lexical scoping 的樣子 12/31 07:54
LPH66: 達成的方法是個叫 trampoline 的技巧讓內層函式有外層的 sp 12/31 07:55
descent: 用 function object 可以達到你要的效果嗎? 12/31 09:35
kingofsdtw: struct 放heap? 01/01 14:47
tubbysong: Google Object-Oriented Programming With ANSI-C pdf 01/01 19:51
TobyH4cker: return (void *)b; ? 01/08 12:31
sunneo: 你只好先讓他輸出原始碼,編為DLL/so然後dlopen/dlsym 02/01 04:44