Fortran 调用函数或子例程
我是fortran新手,我试图执行一个函数/子例程,但我得到了一个所需的错误显式接口 这是我的代码:Fortran 调用函数或子例程,fortran,gfortran,Fortran,Gfortran,我是fortran新手,我试图执行一个函数/子例程,但我得到了一个所需的错误显式接口 这是我的代码: function printmat(m) integer, dimension(:,:) :: m integer :: row,col row = size(m,1) col = size(m,2) do k=1,row print *, m(k,1:col) enddo end function printm
function printmat(m)
integer, dimension(:,:) :: m
integer :: row,col
row = size(m,1)
col = size(m,2)
do k=1,row
print *, m(k,1:col)
enddo
end function printmat
program test
integer, dimension(5, 5) :: mat
integer :: i,j
do i=1,5
do j=1,5
mat(j,i) = real(i)/real(j)
enddo
enddo
call printmat(mat)
end program test
但当我执行它时,我得到:
Error: Explicit interface required for 'printmat' at (1): assumed-shape argument
知道会是什么吗?我尝试将其包装到一个模块中,但当我在程序中使用use modulename时,它会给我一个错误尝试从具有相同名称的文件中读取它将其包装到一个模块中,并使其成为一个子例程(如果您想在调用中使用它) 或者,您可以按照编译器的指示执行,并向程序添加一个显式接口
看起来你没有读我文章的最后一部分,我已经试过了,上面写着“致命错误:无法打开模块文件'printmat_module.mod'以便在1:No这样的文件或目录下阅读”。我使用的是gfortran,可能与此有关,我不知道。@Ghost如果我将上述代码保存为test.f90并使用gfortran test.f90编译,它就可以正常工作。@Ghost我添加了第二个没有模块的部分。@Ghost你能编辑你的问题,告诉我们你使用什么命令来编译带模块的程序吗,以及源代码存储在reat中的文件-但是请注意,您应该使用第一种解决方案,尽量避免在任何地方和任何时候编写显式接口。您确实理解为什么在这种情况下需要一个接口吗?如果在将错误包装到模块中后遇到问题,请说明该尝试,以及如何编译它。就这个问题而言,您似乎知道您可以解决与模块的显式接口的需求,因此我不清楚您的问题是什么。
module printmat_module
contains
subroutine printmat(m)
integer, dimension(:,:) :: m
integer :: row,col
row = size(m,1)
col = size(m,2)
do k=1,row
print *, m(k,1:col)
enddo
end subroutine printmat
end module printmat_module
program test
use printmat_module
integer, dimension(5, 5) :: mat
integer :: i,j
do i=1,5
do j=1,5
mat(j,i) = real(i)/real(j)
enddo
enddo
call printmat(mat)
end program test
subroutine printmat(m)
integer, dimension(:,:) :: m
integer :: row,col
row = size(m,1)
col = size(m,2)
do k=1,row
print *, m(k,1:col)
enddo
end subroutine printmat
program test
interface
subroutine printmat(m)
integer, dimension(:,:) :: m
end subroutine printmat
end interface
integer, dimension(5, 5) :: mat
integer :: i,j
do i=1,5
do j=1,5
mat(j,i) = real(i)/real(j)
enddo
enddo
call printmat(mat)
end program test