我的教授向我們展示了這個代碼:這個包含函數的C函數有什麼問題?
timerX(int x){
int times(int y){
return x * y;
}
return times;
}
如何用C這項工作(使用GCC編譯器)?他說,只要功能消失,內部功能就消失了?我很欣賞任何提示或建議。
我的教授向我們展示了這個代碼:這個包含函數的C函數有什麼問題?
timerX(int x){
int times(int y){
return x * y;
}
return times;
}
如何用C這項工作(使用GCC編譯器)?他說,只要功能消失,內部功能就消失了?我很欣賞任何提示或建議。
它被稱爲nested function, a GNU extension。基本上
內部函數可以接取外部函數的局部變量(其幻影之前聲明的那些)
內部函數只能從外部經由功能poinyers但不叫在包含函數終止後如果內部函數訪問其父項的對象
在您的示例中,從外部調用該函數指針可能是非法的。
如果您在 包含函數退出後嘗試通過其地址調用嵌套函數,則所有地獄都將崩潰。
非常感謝你,我正在研究你給的鏈接! – Coffee 2012-03-12 21:21:37
我很確定它和其他函數一樣工作,只是它只對封閉函數可見。
換句話說,它只是涉及到的能見度或功能的可訪問性,而不是其他。
見http://en.wikipedia.org/wiki/Trampoline_%28computing%29 – 2012-03-12 19:20:25
感謝巴西萊 - 我學吧! – Coffee 2012-03-12 19:26:10
請發佈有效的驗證碼。努力這樣做可能已經爲您帶來了一些見解。特別是,如果'timerX'確實具有'int(*)(int)'作爲返回值,會非常有趣。 – 2012-03-12 19:27:35