C++:为什么在另一个函数中允许函数声明而不是函数定义?

帕夏

我查看了以下问题以检查是否可以在函数中定义函数。

我们可以在函数内部使用函数吗?

接受的答案说它为否。我试过了,得到了同样的结果。

但是当我尝试编译下面的代码(仅声明)时,它确实编译了。我不确定为什么允许这样做。

#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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++:在另一个函数中声明一个函数有什么用?

来自分类Dev

为什么要在C中声明一个函数?

来自分类Dev

在C中另一个函数的输入中定义一个函数

来自分类Dev

为什么在C ++中的另一个类的成员函数中未调用构造函数?

来自分类Dev

在另一个函数中使用C函数

来自分类Dev

另一个函数内部的C ++调用函数

来自分类Dev

从另一个函数C#调用另一个函数

来自分类Dev

在另一个 .c 文件上声明函数使浮点乘法始终为 0

来自分类Dev

为什么我不能将右值引用传递给C ++ 11中的另一个函数?

来自分类Dev

为什么不能将右值引用原样传递给C ++ 11中的另一个函数?

来自分类Dev

从另一个文件调用一个函数到另一个函数C ++

来自分类Dev

为什么在C#中的委托语法也允许+ =,而总是总是指向最后一个函数

来自分类Dev

C ++中的Lambdas将一个函数赋予另一个函数

来自分类Dev

C ++如何使用从一个函数到另一个函数的变量?

来自分类Dev

ANSI C-一个函数可以返回另一个函数吗?

来自分类Dev

在 C 中将一个函数调用到另一个函数中

来自分类Dev

调用另一个文件中定义的C函数

来自分类Dev

以另一个函数为参数的函数“无匹配函数错误” C ++

来自分类Dev

C / C ++:使用类型定义的函数指针来*声明*一个函数

来自分类Dev

C标头中的一个函数的“未定义的引用”,而另一个函数中的“未定义的引用”

来自分类Dev

如何独立于 C++ 中声明的位置在另一个类函数中使用类?

来自分类Dev

同一类的另一个构造函数中的c ++调用构造函数

来自分类Dev

将匿名函数作为唯一参数传递给另一个函数(C ++)

来自分类Dev

C-在函数中声明一个函数并返回

来自分类Dev

为什么必须定义一个空的构造函数C ++

来自分类Dev

如何创建一个C ++宏来定义使用调用另一个函数的参数列表的函数?

来自分类Dev

在C ++中声明const对象需要用户定义的默认构造函数。如果我有一个可变的成员变量,为什么不呢?

来自分类Dev

Srand不是C ++中允许的函数错误

来自分类Dev

从C中的另一个函数调用主函数

Related 相关文章

  1. 1

    C ++:在另一个函数中声明一个函数有什么用?

  2. 2

    为什么要在C中声明一个函数?

  3. 3

    在C中另一个函数的输入中定义一个函数

  4. 4

    为什么在C ++中的另一个类的成员函数中未调用构造函数?

  5. 5

    在另一个函数中使用C函数

  6. 6

    另一个函数内部的C ++调用函数

  7. 7

    从另一个函数C#调用另一个函数

  8. 8

    在另一个 .c 文件上声明函数使浮点乘法始终为 0

  9. 9

    为什么我不能将右值引用传递给C ++ 11中的另一个函数?

  10. 10

    为什么不能将右值引用原样传递给C ++ 11中的另一个函数?

  11. 11

    从另一个文件调用一个函数到另一个函数C ++

  12. 12

    为什么在C#中的委托语法也允许+ =,而总是总是指向最后一个函数

  13. 13

    C ++中的Lambdas将一个函数赋予另一个函数

  14. 14

    C ++如何使用从一个函数到另一个函数的变量?

  15. 15

    ANSI C-一个函数可以返回另一个函数吗?

  16. 16

    在 C 中将一个函数调用到另一个函数中

  17. 17

    调用另一个文件中定义的C函数

  18. 18

    以另一个函数为参数的函数“无匹配函数错误” C ++

  19. 19

    C / C ++:使用类型定义的函数指针来*声明*一个函数

  20. 20

    C标头中的一个函数的“未定义的引用”,而另一个函数中的“未定义的引用”

  21. 21

    如何独立于 C++ 中声明的位置在另一个类函数中使用类?

  22. 22

    同一类的另一个构造函数中的c ++调用构造函数

  23. 23

    将匿名函数作为唯一参数传递给另一个函数(C ++)

  24. 24

    C-在函数中声明一个函数并返回

  25. 25

    为什么必须定义一个空的构造函数C ++

  26. 26

    如何创建一个C ++宏来定义使用调用另一个函数的参数列表的函数?

  27. 27

    在C ++中声明const对象需要用户定义的默认构造函数。如果我有一个可变的成员变量,为什么不呢?

  28. 28

    Srand不是C ++中允许的函数错误

  29. 29

    从C中的另一个函数调用主函数

热门标签

归档