我必须创建一个简化分数的函数。如果我可以从函数内部调用另一个函数来轻松找到GCD,那就太好了。

我的代码是:

int mcd(int n1, int n2){
    int mcd = 1;
    for(int i = 2; i <= n1 && i <= n2; ++i){
        if(n1 % i == 0 && n2 % i == 0){
            mcd = i;
        }
    }
    return mcd;
}

int reduir(fraccio* sol){
    int a, b, mcd;
    a = sol->num;
    b = sol->den;
    mcd = mcd(a, b);
    sol->num = sol->num / mcd;
    sol->den = sol->den / mcd;

    if (sol->num < 0) {
        sol->signe = '-';
        sol->num = sol->num * -1;
    }
    return 0;
}


我在网上遇到编译错误

    mcd = mcd(a, b);



  调用的对象类型int不是函数或函数指针


我做错了什么,如何解决?

最佳答案

您正在将mcd重新声明为int。那就是问题所在。它掩盖了全局声明的函数mcd()。现在,当您调用它时,您基本上是在尝试使用函数名称形式的int变量。编译器抱怨。

09-06 10:26