我继承了一个相当大(但仍然可以管理)的fortran(F90)代码库,并且作为一个全新的fortran新手,我试图编译它。第一个错误很容易纠正,但这个错误超出了我的理解。
% make
[ 1%] Building Fortran object CMakeFiles/Core.dir/vars.f90.o
/Users/sensei/Documents/Projects/vars.f90:127:32:
real*8, dimension(0:links(kg)), intent(out) :: feq_vect
1
Error: Specification function 'links' at (1) must be PURE
现在,当我匆匆通过代码时,我找到了link
声明:
integer, allocatable, dimension(:) :: links
我看到这是一个向量,而不是一个函数,为什么gfortran
抱怨这是一个函数?下面是一个独立的例子。
如何更正此错误?
mph.f90
program mph
use vars
!
implicit none
endprogram mph
vars.f90
module vars
implicit none
integer, allocatable, dimension(:) :: links
abstract interface
subroutine linkstest(kg,feq_vect)
real*8, dimension(0:links(kg)), intent(out) :: feq_vect
endsubroutine
end interface
end module vars
虽然错误与this question完全不同,但解决方案似乎是相同的:将import
添加到子例程中。