首页 > 解决方案 > 为什么要在定义函数之前声明它?

问题描述

为什么要在定义函数之前声明它?我正在使用 C++。我知道有人可能会认为这是一个幼稚的问题,但我真的很困惑。

标签: c++

解决方案


为什么要在定义函数之前声明它?

因为很可能部分或全部想要调用您的函数的代码将无法访问定义。考虑在与您的函数不同的 .cpp 文件中定义的函数;编译该 .cpp 时,编译器不会加载函数的 .cpp 文件来检查函数的名称、参数类型和返回类型——但我们仍然希望编译器在函数调用不正确时发出错误,因此编译器需要以某种方式了解您的函数的名称和签名——C ++ 设计者采用的解决方案是将函数名称和签名的声明放在编译器确实可以访问的单独 .h 文件中(通过#include) .

(如果你想知道为什么编译器不能只读取所有必要的 .cpp 文件——理论上它可以,尽管以增加编译时间为代价——但这仍然会给我们留下一个问题包含您的函数的 .cpp 文件在想要使用您的函数的系统上不存在的用例,因为您的函数仅作为预编译库的一部分提供给调用代码。在这种情况下, .h 文件中的单独声明仍然是必要的)


推荐阅读