为什么在声明其内容之前我不能声明一个函数? (C ++)

时间:2017-03-21 00:20:24

标签: c++ forward-declaration

我有这个程序增加了数字的功能,并且由于某种原因它在我运行时不断向我抛出错误,如果我在主函数之前声明和定义内容,程序运行正常但我不是理解为什么这是必要的......以下是给我提问的代码:

#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;
}

将其更改为此可以解决所有问题,但我并不知道为什么......

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

long long addPow(int n, int p) {
    long long sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += pow(i, p);
    }
    return sum;
}

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

如果有人可以帮助我,我真的很感激!

1 个答案:

答案 0 :(得分:2)

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

addPow(int n, int p) {

需要您放入原型的额外信息(即返回类型)。它应该是这样的:

long long addPow(int n, int p) {