Fortran Coder

标题: 定义外部函数要怎么调用? [打印本页]

作者: Proteus    时间: 2021-8-11 14:15
标题: 定义外部函数要怎么调用?
各位大佬,我在主程序main外定义了一个外部函数,然后在主程序中调用,但是出现这个错误,这是咋回事??球球了!!感谢!!
以下是部分代码:
[Fortran] 纯文本查看 复制代码
program main
    implicit none
    real,external::vvmat(2,2)
    real dh0(2,2),v1(2)
    integer n
    n=2
    dh0=vvmat(v1,v1,n)
end program main

function vvmat(a,b,n)
implicit none
    integer n,i,j
    real(kind=dp) a(n),b(n),vvmat(n,n)
    do i=1,n
        do j=1,n
            vvmat(i,j)=a(i)*b(j)
        end do
    end do
end function vvmat

如果用allocate将vvmat()定义成分配数组,应该怎么定义呢?

1.png (47.89 KB, 下载次数: 255)

1.png

作者: Proteus    时间: 2021-8-11 14:54
我把外部函数定义改为:
[Fortran] 纯文本查看 复制代码
real,external::vvmat

出现了这样的错误:
错误        1         error #8099: The rank of the function reference does not match the rank of the function definition.   [VVMAT]

作者: li913    时间: 2021-8-11 17:33
函数返回值为数组,需要interface. 看《interface功能详解》http://fcode.cn/guide-61-1.html
作者: necrohan    时间: 2021-8-12 08:12
用参数传递返回值吧,比较简单
作者: Proteus    时间: 2021-8-13 09:40
li913 发表于 2021-8-11 17:33
函数返回值为数组,需要interface. 看《interface功能详解》http://fcode.cn/guide-61-1.html ...

感谢感谢!!!
作者: Proteus    时间: 2021-8-13 09:43
necrohan 发表于 2021-8-12 08:12
用参数传递返回值吧,比较简单

好的,我试一试,谢谢!!!!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2