C++ 为什么我不能在声明函数的内容之前声明它?(c+;+;)

C++ 为什么我不能在声明函数的内容之前声明它?(c+;+;),c++,forward-declaration,C++,Forward Declaration,我有一个增加数字幂的程序,由于某种原因,当我运行它时,它不断向我抛出一个错误,如果我在主函数之前声明和定义内容,程序运行良好,但我不明白为什么这是必要的。。。下面是给我带来问题的代码: #include <iostream> #include <math.h> using namespace std; long long addPow(int n, int p); int main() { cout << addPow(100, 1) * addP

我有一个增加数字幂的程序,由于某种原因,当我运行它时,它不断向我抛出一个错误,如果我在主函数之前声明和定义内容,程序运行良好,但我不明白为什么这是必要的。。。下面是给我带来问题的代码:

#include <iostream>
#include <math.h>
using namespace std;

long long addPow(int n, int p);

int main() {
    cout << addPow(100, 1) * addPow(100, 1) - addPow(100, 2) << endl;
    return 0;
}

addPow(int n, int p) {
    long long sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += pow(i, p);
    }
    return sum;
}
#包括
#包括
使用名称空间std;
long-long-addPow(intn,intp);
int main(){

cout第一个代码块中的函数,定义为

addPow(int n, int p) {
需要输入到原型中的额外信息(即返回类型)。它应该如下所示:

long long addPow(int n, int p) {

第一个代码块中的函数,定义为

addPow(int n, int p) {
需要输入到原型中的额外信息(即返回类型)。它应该如下所示:

long long addPow(int n, int p) {

您忘记了返回类型:
long-long-addPow(int-n,int-p){…}
这是因为
addPow(int-n,int-p)
这是邪恶的孪生兄弟
double-addPow(double-n,double-p)
除非我必须使用它们,否则我不喜欢转发声明。如果你更改其中一个的原型,无论是类型更改,甚至只是一个拼写错误修复,你都必须更改另一个。错过一个,你会得到一个没有意义的编译器错误,因为你正在正确地查看它,它是正确的,或者是一个没有意义的链接器错误,因为你我们看到了另一个声明,它是正确的。您忘记了返回类型:
long-long-addPow(int-n,int-p){…}
这是因为像
addPow(int-n,int-p)
这样的东西,它是邪恶的双胞胎
double-addPow(double-n,double-p)
除非我必须使用它们,否则我不喜欢转发声明。如果你更改其中一个的原型,无论是类型更改,甚至只是一个拼写错误修复,你都必须更改另一个。错过一个,你会得到一个没有意义的编译器错误,因为你正在正确地查看它,它是正确的,或者是一个没有意义的链接器错误,因为你我们在看另一份声明,它是对的。哦,我的天,非常感谢你!说实话,那是一个愚蠢的错误。我一定会记得,哈哈,我的天,非常感谢你!说实话,那是一个愚蠢的错误。我一定会记得,哈哈