首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mpfr_t函数声明错误

mpfr_t函数声明错误
EN

Stack Overflow用户
提问于 2014-12-18 06:25:02
回答 2查看 261关注 0票数 2

我试图创建一个返回类型为mpfr_t的函数,但在声明中遇到错误。头文件声明如下所示(mpfr.h是本地文件):

代码语言:javascript
复制
#include "include/mpfr.h"
mpfr_t calcWinProb(int x);

但是当我尝试编译时,我得到了以下错误:

代码语言:javascript
复制
error: âcalcWinProbâ declared as function returning an array

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2014-12-18 06:48:43

C语言不允许数组作为返回类型,而mpfr_t肯定是:

代码语言:javascript
复制
typedef __mpfr_struct mpfr_t[1];

参考N1570 (C11草案) 6.7.6.3/1函数声明符(包括原型)

函数声明符不应指定为函数类型或数组类型的返回类型。

这违反了约束,因此您的编译器必须进行诊断(例如,编译时出错)。

你可以做的就是用mpfr_ptr (指向结构的指针)类型替换mpfr_t,或者重新设计你的声明,所以mpfr_t是参数之一(可能是第一个),而不是返回类型,在这种情况下可能是void。后一种解决方案似乎与MPFR API更一致。

票数 3
EN

Stack Overflow用户

发布于 2015-08-03 20:51:28

我不是专家,但我所做的是创建一个函数,该函数将指向mpfr_t的指针作为参数,因此您可以在那里返回值。例如:

代码语言:javascript
复制
#include <stdio.h>
#include <mpfr.h>

void return_one(mpfr_t *num) {
    mpfr_set_ui(*num,1,MPFR_RNDN);
}

int main() {
    mpfr_t num;
    mpfr_init2(num,512);
    return_one(&num);
    mpfr_printf("%.5Rf\n",num);
    mpfr_clear(num);
    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27535989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档