在 C 中创建 mpfr_t 类型的一维数组

Creating 1D arrays of mpfr_t types in C

我正在使用 GNU MPFR 库,我写了一些简单的 C 代码。
我正在尝试创建一个 mpfr_t 对象的单元素数组:

mpfr_t result;
// (some code that assigned values to the variable 'result')
mpfr_t temparr[1];
temparr[0] = result;
mpfr_clear(result);

我收到以下错误:

./library/file.hpp:663:20: error: array type 'mpfr_t' (aka '__mpfr_struct [1]') is not assignable
1 error generated.
Error: Process completed with exit code 1.

我应该在这里修改什么?另外 - 我想我也必须另外清除 temparr[0] 变量,对吧?


既然来了,不妨问一下动态数组。在代码的后面,在另一个函数中,我有:

mpfr_t* temparr = new mpfr_t[var];
// some code
for (unsigned int i=0; i < var; i++) mpfr_clear(temparr[i]);
delete[] temparr;

我想这没问题吧?它现在在编译期间不会引发任何错误,至少...

如 MPFR 手册所述:

The C data type for such objects is ‘mpfr_t’, internally defined as a one-element array of a structure

这说明您不能直接对 mpfr_t 进行赋值。

此外,mpfr_t 数组不包含定义 MPFR 编号的所有数据(这在手册中或多或少缺少;这在 Internals 部分中有描述,但是我想用户不必阅读本节来警告他们不要做不正确的事情)。这意味着,一般来说,您不能只复制 mpfr_t 数组(例如 memcpy)。复制 MPFR 号码的唯一安全方法是通过 MPFR 接口,例如mpfr_set.

您的 C++ 代码似乎是正确的(至少您编写的部分是正确的)。您可以定义 mpfr_t.

的数组