我试图创建一个返回类型为mpfr_t的函数,但在声明中遇到错误。头文件声明如下所示(mpfr.h是本地文件):
#include "include/mpfr.h"
mpfr_t calcWinProb(int x);但是当我尝试编译时,我得到了以下错误:
error: âcalcWinProbâ declared as function returning an array有什么想法吗?
发布于 2014-12-18 06:48:43
C语言不允许数组作为返回类型,而mpfr_t肯定是:
typedef __mpfr_struct mpfr_t[1];参考N1570 (C11草案) 6.7.6.3/1函数声明符(包括原型)
函数声明符不应指定为函数类型或数组类型的返回类型。
这违反了约束,因此您的编译器必须进行诊断(例如,编译时出错)。
你可以做的就是用mpfr_ptr (指向结构的指针)类型替换mpfr_t,或者重新设计你的声明,所以mpfr_t是参数之一(可能是第一个),而不是返回类型,在这种情况下可能是void。后一种解决方案似乎与MPFR API更一致。
发布于 2015-08-03 20:51:28
我不是专家,但我所做的是创建一个函数,该函数将指向mpfr_t的指针作为参数,因此您可以在那里返回值。例如:
#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;
}https://stackoverflow.com/questions/27535989
复制相似问题