【发布时间】:2018-02-08 05:05:54
【问题描述】:
我在使用 gfortran 5.4 和 .f90 代码时遇到此编译错误
call abc_output(struc,nx,ny,nz,'AB' ,get_ab_dat(p_f),&
1
Error: Non-variable expression in variable definition context (actual argument to INTENT = OUT/INOUT) at (1)
产生编译错误的方法调用如下所示 并且错误在 get_ab_dat
type(b_f) :: p_f
call abc_output(struc,nx,ny,nz,'AB' ,get_ab_dat(p_f),&
'BD' ,get_bc_dat(p_f),&
'EF' , aaa )
get_ab_dat函数如下图
function get_ab_dat(bf) result(qx_arr)
type(b_f),intent(in) :: bf
real,dimension(:,:,:),allocatable :: qx_arr
qx_arr = bf%qx
end function get_ab_dat
subroutine abc_output (struc,nx,ny,nz,dname1,data1,&
dname2,data2,dname3,data3,dname4,data4)
type(c_s),intent(in) :: struc
integer,intent(in) :: nx,ny,nz
character(len=*),intent(in) :: dname1
real,dimension(:,:,:),allocatable,intent(inout) :: data1
character(len=*),intent(in),optional :: dname2,dname3,dname4
real,dimension(:,:,:),allocatable,intent(inout),optional :: data2,data3,data4
有人能解释一下这个错误的含义以及我该如何解决它吗?
【问题讨论】:
-
请显示完整的代码和完整的错误信息。错误消息中的 (1) 指向哪里?
-
顺便说一句,您的代码不是 Fortran 90,而是 Fortran 2003,所以 fortran90 标记令人困惑。文件扩展名 .f90 不代表 Fortran 90,它意味着固定格式的源代码。
-
可能与
abc_output相关联,显示。 -
@agentp - abc_output 非常大。我可以在顶部发布声明部分吗?
-
是的,你可以。事实上,争论的意图就足够了。无论如何,它可能是重复的。
标签: fortran gfortran fortran2003