Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler errors 什么';下面的Fortran代码有什么问题?(1)处的(gfortran)DTIO伪参数必须是假定的形状数组_Compiler Errors_Fortran_Gfortran - Fatal编程技术网

Compiler errors 什么';下面的Fortran代码有什么问题?(1)处的(gfortran)DTIO伪参数必须是假定的形状数组

Compiler errors 什么';下面的Fortran代码有什么问题?(1)处的(gfortran)DTIO伪参数必须是假定的形状数组,compiler-errors,fortran,gfortran,Compiler Errors,Fortran,Gfortran,我有以下代码: module scheme type, abstract :: scheme_object contains procedure, pass :: generic_scheme_print => print_scheme_object generic, public :: write (formatted) => generic_scheme_print end type scheme_object abstract inte

我有以下代码:

module scheme

  type, abstract :: scheme_object
   contains
     procedure, pass :: generic_scheme_print => print_scheme_object
     generic, public :: write (formatted) => generic_scheme_print
  end type scheme_object

  abstract interface
     subroutine packageable_procedure(  )
       import scheme_object
     end subroutine packageable_procedure
  end interface
contains

  subroutine print_scheme_object(this, unit, iotype, v_list, iostat, iomsg)
    class(scheme_object), intent(in) :: this
    integer, intent(in)         :: unit
    character(*), intent(in)    :: iotype
    integer, intent(in)         :: v_list (:)
    integer, intent(out)        :: iostat
    character(*), intent(inout) :: iomsg
    iostat = 1
  end subroutine print_scheme_object

  subroutine packaged_cons( )
  end subroutine packaged_cons

  function make_primitive_procedure_object( proc1 ) result( retval )
    class(scheme_object), pointer :: retval
    procedure(packageable_procedure), pointer :: proc1
  end function make_primitive_procedure_object


  subroutine ll_setup_global_environment()
    procedure(packageable_procedure), pointer :: proc1
    class(scheme_object), pointer :: proc_obj_to_pack
    proc1 => packaged_cons
    proc_obj_to_pack => make_primitive_procedure_object( proc1 )
  end subroutine ll_setup_global_environment

end module scheme

program main
end program main
这段代码可以使用ifort 19.1.1.217 20200306很好地编译,运行时什么也不做(如预期的那样)

但是,使用gfortran编译它失败,出现了一条神秘的错误消息:

   16 |   subroutine print_scheme_object(this, unit, iotype, v_list, iostat, iomsg)
      |                                                           1
Error: DTIO dummy argument at (1) must be an ASSUMED SHAPE ARRAY
将“v_list”声明的长度更改为任意整数将产生两个相同的梅萨日:

   16 |   subroutine print_scheme_object(this, unit, iotype, v_list, iostat, iomsg)
      |                                                           1
Error: DTIO dummy argument at (1) must be an ASSUMED SHAPE ARRAY

   16 |   subroutine print_scheme_object(this, unit, iotype, v_list, iostat, iomsg)
      |                                                           1
Error: DTIO dummy argument at (1) must be an ASSUMED SHAPE ARRAY

问题出在哪里?

我不确定这是否是一个正确的答案,但是


您的代码是正确的,并且在特定的编译器中暴露了一个bug

没有DTIO方面的专家,从来没有使用过它,因此是一个评论而不是一个答案-但是从我有限的理解来看,这看起来很好,这可能是一个编译器错误?哪个gfortran版本发布了这个错误?您可以检查bugzilla并尝试最新版本。如果bugzilla中不存在该漏洞,您应该报告它,或者您可以告诉我们您无法做到这一点,我们可以自己尝试。这是gfortran中的漏洞。已向fortran@gcc.gnu.org邮件列表。