我查看了以下问题以检查是否可以在函数中定义函数。
接受的答案说它为否。我试过了,得到了同样的结果。
但是当我尝试编译下面的代码(仅声明)时,它确实编译了。我不确定为什么允许这样做。
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int a, *b, f(int c); //trying out multiple name declaration
int f(int c);
}
C++:为什么在另一个函数中允许函数声明而不是函数定义?
因为标准这么说(或没有明确禁止)。旁注:同样适用于块范围内的全局变量声明。
你可能会问,为什么标准委员会不禁止它。并非标准的每条规则的所有基本原理,尤其是缺乏假设规则,都记录在案,但我可以在这种情况下进行推测。
必须明白的是,C++ 最初是建立在 C 语言之上的,在标准化的时候,与 C 的兼容性是一个高优先级(我相信它仍然是)。所以,我很有信心地说 C++ 中的块范围内允许函数(和全局变量)声明,因为它们在 C 中是允许的。
为什么 C 中允许函数声明,您可能还会问。据我所知,现代 C 中块作用域函数声明的使用已经下降,这是预标准化时代的遗物。我们或许可以将语言传承延续到 B 语言。我自己对 B 了解不多,但维基百科中的示例代码恰好有一个块作用域函数声明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句