我想学习如何在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