我想學習如何在c中使用GNU GMP庫,我編寫了這個程序,看看如何工作mpz_t mpq_numref(mpq_t N)
和mpz_t mpq_denref(mpq_t N)
。我收到一個錯誤,真的不知道應該如何修改代碼才能使其正常工作。問:從類型'struct __mpz_struct *'分配類型'mpz_t'時不兼容的類型?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <gmp.h>
int main()
{
mpq_t u, v;
mpz_t a,b,c;
mpz_init(a);
mpz_init(b);
mpq_init(u);
mpq_init(v);
mpq_set_si(u, -6 ,2);
mpq_canonicalize(u);
a= mpq_numref(u);
b= mpq_denref(u);
gmp_printf("u =%Zd/%Zd\n", a,b);
return 0;
}
我得到的錯誤是:
error: incompatible types when assigning to type ‘mpz_t’ from type ‘struct __mpz_struct *’
a= mpq_numref(u);
^
7.c:21:8: error: incompatible types when assigning to type ‘mpz_t’ from type ‘struct __mpz_struct *’
b= mpq_denref(u);
^
非常感謝您的任何幫助的錯誤消息
問題是'mpz_t'實際上是一個數組類型的typedef,所以你不能寫'a ='。你將不得不使用一個函數來完成這個任務。,.e.g [見這裏](https://gmplib.org/manual/Assigning-Integers.html) –
謝謝你的幫助 – Kemo