Fortran Coder

查看: 294|回复: 1

[派生类型] 定义子例程序时变量选用了派生数据类型,变量类型不匹配

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
10 元
贡献
4 点
发表于 2021-8-17 21:13:05 | 显示全部楼层 |阅读模式
代码时下面就这个简单的代码
[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 求大神帮忙解答

回复

使用道具 举报

44

帖子

1

主题

1

精华

专家

Vim

F 币
466 元
贡献
233 点

规矩勋章

发表于 2021-8-17 22:00:48 | 显示全部楼层
本帖最后由 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

评分

参与人数 1F 币 +3 收起 理由
fcode + 3 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2021-9-24 08:06

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表