c++ - 为什么可以将函数原型(prototype)放在函数内部?

标签 c++ function-prototypes

有时我会写如下代码

struct Bob
{
    Bob() {}
};

int main()
{
    Bob b();
}

我想做的是使用 Bob 的默认构造函数创建一个对象 b。要修复它,我必须删除 b 之后的括号。事实证明,否则编译器将该行解释为函数原型(prototype)!

好的,我可以理解,遵守规则。但是为什么你可以把一个函数原型(prototype)放在一个函数里面呢?目的是什么?

最佳答案

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

然后,当 C++ 继承了 C 的功能时,他们无法在不冒破坏现有代码的风险的情况下更改这种构造的含义。

如果您要问他们为什么完全允许局部函数声明,那可能是因为他们希望允许函数的作用域尽可能接近使用,或者它可能只是随时间流逝。

关于c++ - 为什么可以将函数原型(prototype)放在函数内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17660411/

相关文章:

c++ - 用于 Visual Studio 2013 的 QT 插件

c - 是否有可能 "typedef"(某种)函数原型(prototype)?

c++ - 提取 C/C++ 函数原型(prototype)

c - C中没有参数的函数

c++ - 对内联函数有不同的定义是未定义的行为吗?

c - 是否需要释放返回的 localtime() 结构?

c++ - UTF-8 从文件到文本框 VC++ 6.0

c++ - 使用多个排序键实现排序的自定义比较器

c++ - nvcc 在 Debug模式下编译失败 : Single file required

C++ 动态数组 - 为什么我能做到这一点?