c - 错误 : declared as function returning an array in c (mpfr libary)

标签 c mpfr

我是 mpfr 的初学者,我写了这个程序来进行特定的计算并像你看到的那样得到它,但我不知道为什么会出现这个错误,这是我最重要的代码:

mpfr_t  myfct(int n)

{
   /......./
        return mpfr_get(result,MPFR_RNDN);

}

int main(void)
{

    mpfr_t U;
    mpfr_set_default_prec (53); 

    mpfr_set_emin (-1073);
    mpfr_set_emax (1024);

    n=10;
    mpfr_init2(U,24);
    mpfr_get(U,my_fct(n),MPFR_RNDN);
    mpfr_printf ("result: %.40Rg\n", U);

    mpfr_clear(U);

    return 0;
}

怎么了??

最佳答案

如 GMP 类型,mpfr_t是一个大小为 1 的数组(元素是一个结构,但您实际上不需要知道这一点)。如果您决定编写一个返回 MPFR 数字的函数,您有 2 种可能性(以及其他):

  1. 调用者分配并初始化 mpfr_t具有一定的精度。在这种情况下,mpfr_t应该作为函数的参数,this 是指向实际传递的这个数组的指针(根据 C 语言的规则)。基本上,这可以看作是传递变量by reference。 . MPFR 函数使用此方法。
  2. 调用者不分配任何东西。函数的原型(prototype)应该是函数返回一个指针mpfr_ptr。到结构。所以,这个函数将分配 mpfr_t通常与 malloc (以便函数返回时不会释放内存),然后用 mpfr_init2 初始化结构.精度可以由此函数选择或作为参数传递。

注意:你的程序有各种错别字,但我想这不是这个问题的重点。

关于c - 错误 : declared as function returning an array in c (mpfr libary),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136973/

相关文章:

haskell - 是否还需要重新编译 GHC 才能使用 HMPFR?

c - Fedora 和 ubuntu 中的库相同但名称不同?

c位运算bug

c - 文件中此时函数 ' ' 的参数过多

谁能帮我理解这段代码的执行情况?

configuration - GCC无法找到GMP,MPFR和MPC库

c - 如何在 Linux 中获取文件中某个位置的物理地址

c - mpfr_t 的类型是什么?如何制作这种类型的 C 函数?

c - MPFR 未正确复制数据

gcc - 让 MPFR 在 cygwin 上构建