Rule_Tn
Fortran 库 CUBPACK 中的子程序需要一个Integrand
描述集成向量函数的参数。它是
INTERFACE
FUNCTION Integrand(NF,X) RESULT(Value)
USE Precision_Model
INTEGER, INTENT(IN) :: NF
REAL(KIND=STND), DIMENSION(:), INTENT(IN) :: X
REAL(KIND=STND), DIMENSION(NF) :: Value
END FUNCTION Integrand
END INTERFACE
因为我想Rule_Tn
从 C 代码中调用,所以我需要在 C 中定义一个与上面这个接口完全匹配的函数类型。因此,我试图弄清楚 Fortran 函数如何返回数组。起初我假设以下 C 签名
void Integrand(double* value, const int* nf, const int* x);
匹配上面的界面。但大错特错!我有一个段错误。而且我已经测试过 double 是对应REAL(KIND=STND)
于STND
模块的类型Precision_Model
。
现在谁能告诉我正确的签名是什么?我正在使用 GNU Fortran 和 C 编译器。