这个包含函数的C函数有什么问题?
问题描述:
我的教授向我们展示了这个代码:这个包含函数的C函数有什么问题?
timerX(int x){
int times(int y){
return x * y;
}
return times;
}
如何用C这项工作(使用GCC编译器)?他说,只要功能消失,内部功能就消失了?我很欣赏任何提示或建议。
答
它被称为nested function, a GNU extension。基本上
内部函数可以接取外部函数的局部变量(其幻影之前声明的那些)
内部函数只能从外部经由功能poinyers但不叫在包含函数终止后如果内部函数访问其父项的对象
在您的示例中,从外部调用该函数指针可能是非法的。
如果您在 包含函数退出后尝试通过其地址调用嵌套函数,则所有地狱都将崩溃。
+0
非常感谢你,我正在研究你给的链接! – 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