首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可选派生数据类型组件的存在

可选派生数据类型组件的存在
EN

Stack Overflow用户
提问于 2016-06-20 01:37:42
回答 1查看 55关注 0票数 2

存在属性是否“继承”了派生数据结构的组件?标准规定,如果不存在相应的实际参数,则不存在虚拟参数。但我不确定这如何适用于派生数据类型的组件,如下例所示:

代码语言:javascript
复制
program test
  implicit none

   type some_type
     integer :: acomponent
   end type some_type

   type(some_type) :: testval

   testval%acomponent = 42

   call outer()

   call outer(testval)

contains

  subroutine outer(me)
    type(some_type), optional :: me

    call inner(me%acomponent)
  end subroutine outer

  subroutine inner(simple)
    integer, optional :: simple

    if (present(simple)) then
      write(*,*) 'simple present:', simple
    else
      write(*,*) 'simple not present...'
    end if
  end subroutine inner

end program test

上面的示例使用gfortran-5编译并运行良好,但它是否符合标准?不知怎么的,我看了标准就搞不懂了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-20 02:36:00

示例代码不符合要求。

Fortran 2008标准的相关部分在12.5.2.12p3 (5)中--“不作为基本对象并带有一个或多个子对象选择器的可选虚拟参数不能作为实际参数提供。”

me%acomponent中的组件引用是一个子对象选择器。类似地,如果me是数组,则任何形式的数组下标也将是子对象选择器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37913590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档