从类型'int'分配类型'bignum'时不兼容的类型

时间:2015-11-21 14:53:15

标签: c struct types int

我必须对数字很大(一些数字大于long long int)。从类型'int'分配类型'bignum'时,我遇到的问题是不兼容的类型 下面给出了代码,并提供了声明。请帮帮我。

typedef struct {
char digits[MAXDIGITS]; /* represent the number */
int lastdigit; /* index of high-order digit */
} bignum;

bignum add_bignum(bignum a, bignum b);
bignum square(bignum x);

bignum square(bignum x){
bignum c;
.
.
.
return c;
}


bignum modified_fibo(int A,int B,int N){
bignum fibo[N-1];
int i;
fibo[0]=initialise(A);
fibo[1]=initialise(B);
bignum val;
for(i=2;i<N;i++){
    val = bignum_square(fibo[i-1]);
    fibo[i] = add_bignum(val,fibo[i-2]);
}   
return fibo[N-1];
}

我遇到错误 val = bignum_square(fibo [i-1]);

1 个答案:

答案 0 :(得分:0)

当编译器看到函数调用没有定义的函数时,它隐式声明一个返回类型为int的函数。您定义了一个函数

bignum square(bignum x);

但没有

bignum bignum_square(bignum x);

所以编译器隐式声明

int bignum_square(bignum x);

并且您收到错误,因为在此处使用隐式声明的函数时,您将int分配给bignum

val = bignum_square(fibo[i-1]);

正如评论中所建议的,使用您已定义的功能

val = square(fibo[i-1]);