为什么可以在函数中放置函数原型?

时间:2013-07-15 17:40:09

标签: c++ function-prototypes

有时我会编写如下代码

struct Bob
{
    Bob() {}
};

int main()
{
    Bob b();
}

我想要做的是使用Bob的默认构造函数创建一个对象b。为了解决这个问题,我必须在b之后删除括号。事实证明,编译器会将该行解释为函数原型!

好的,我可以理解遵守规则。但是为什么你可以在函数中放入一个函数原型呢?目的是什么?

1 个答案:

答案 0 :(得分:2)

大概是因为在C中语法没有其他可能的含义(没有成员函数或构造函数)所以他们将它指定为函数声明。

然后,当C ++从C继承了这些功能时,他们无法改变这种结构的含义而不会有现有代码破坏的风险。

如果你问他们为什么允许本地函数声明,那可能是因为他们希望允许函数尽可能地使用范围,或者它可能只是丢失了。