在函数内使用声明函数?

时间:2011-10-05 08:19:21

标签: c++ function function-declaration

  

可能重复:
  Is there a use for function declarations inside functions?

我知道在函数内部我们可以声明一个函数。有什么用?你能举一个简单的例子吗?

2 个答案:

答案 0 :(得分:6)

在函数内部声明一个函数几乎没有价值,除非您打算稍后定义它并且只将它用于该函数 - 即函数声明被封装。

int main() {
    void foo();
    foo();
}
void some_other_func() {
    foo(); // ERROR
}
void foo() {
}

但就是这样。与触发最令人烦恼的解析相比,这是一个非常有限的好处。

答案 1 :(得分:0)

AFAIK,在C / C ++中定义函数内部的函数是非标准的,只有一些编译器支持它。但是,您可以使用新的C ++功能,即所谓的lambda函数。

在其他函数内部定义函数(或lambda函数)可能有多种用途(取决于实现):

  1. 您保持相关代码的关闭,更容易阅读和理解。
  2. 内部函数可以直接访问外部函数的变量(因此,显式传递的参数更少)。