在 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
.
的数组
我正在使用 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
.