这个包含函数的C函数有什么问题?

问题描述:

我的教授向我们展示了这个代码:这个包含函数的C函数有什么问题?

timerX(int x){ 

    int times(int y){ 
      return x * y; 
    } 
    return times; 

} 

如何用C这项工作(使用GCC编译器)?他说,只要功能消失,内部功能就消失了?我很欣赏任何提示或建议。

+2

见http://en.wikipedia.org/wiki/Trampoline_%28computing%29 – 2012-03-12 19:20:25

+0

感谢巴西莱 - 我学吧! – Coffee 2012-03-12 19:26:10

+2

请发布有效的验证码。努力这样做可能已经为您带来了一些见解。特别是,如果'timerX'确实具有'int(*)(int)'作为返回值,会非常有趣。 – 2012-03-12 19:27:35

它被称为nested function, a GNU extension。基本上

  • 内部函数可以接取外部函数的局部变量(其幻影之前声明的那些)

  • 内部函数只能从外部经由功能poinyers但不叫在包含函数终止后如果内部函数访问其父项的对象

在您的示例中,从外部调用该函数指针可能是非法的。

如果您在 包含函数退出后尝试通过其地址调用嵌套函数,则所有地狱都将崩溃。

+0

非常感谢你,我正在研究你给的链接! – Coffee 2012-03-12 21:21:37

我很确定它和其他函数一样工作,只是它只对封闭函数可见。

换句话说,它只是涉及到的能见度或功能的可访问性,而不是其他。