Fortran Coder

标题: 定义子例程序时变量选用了派生数据类型,变量类型不匹配 [打印本页]

作者: dugujiansheng    时间: 2021-8-17 21:13
标题: 定义子例程序时变量选用了派生数据类型,变量类型不匹配
代码时下面就这个简单的代码
[Fortran] 纯文本查看 复制代码
program test
    implicit none
    real(kind=8) :: a
    type :: mytype
    real :: kk
    end type mytype


    type(mytype) :: tt(2)

    a=1
    write(*,*) tt(1)
    write(*,*) tt(2)
    call funcs_syn(a,tt)

end program test

subroutine funcs_syn(wavei,AtmospherePara)

real(kind=8) wavei
    type :: mytype
    real :: kk
    end type mytype
  type(mytype) :: AtmospherePara(2)  
  return
end

结果报错时出现这个1>c:\users\admin\documents\visual studio 2010\Projects\Console7\Console7\Console7.f90(28): error #6633: The type of the actual argument differs from the type of the dummy argument.   [TT]
1>compilation aborted for c:\users\admin\documents\visual studio 2010\Projects\Console7\Console7\Console7.f90 (code 1)

我用的visual fortran 求大神帮忙解答


作者: Transpose    时间: 2021-8-17 22:00
本帖最后由 Transpose 于 2021-8-17 22:01 编辑

type的定义无法传递给子程序,即使是相同的定义方式,也无法认为是同一个类型。子程序使用type必须要借助module,
[Fortran] 纯文本查看 复制代码
module mytype
    implicit none
    type m
        real::a
    end type m
end module mytype

program main
    use mytype
    implicit none
    type(m)::b
    b%a=2.0
    call test(b)
end program main

subroutine test(b)
    use mytype
    implicit none
    type(m)::b
    write(*,*)b%a
end subroutine test






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