2012-07-13 55 views
0

在编写库来读取图像值时,存在以下问题: 我定义了一个名为realimage的新类型。在这个类型中引用一个函数,作为结果返回一个数组。要从类型定义中调用的数组值函数

module typedefinition 
implicit none 

type realimage 
    integer  :: byteorder  = 0 
    contains 
    procedure :: initialize => initializereal 
    procedure :: pxvalues => pxvaluesreal ! Array valued function 
end type realimage 

contains 
    function pxvaluesreal(this, x, y) result(val) 
    implicit none 
    type(realimage) this 
    real val(5) 
    integer :: x, y 
    ... 
    end function 
end module 

编译与gfortran模块并调用函数image1%pxvalues(x,y),我总是得到以下错误消息:

main.f95: In function ‘testtype’: 
main.f95:15: internal compiler error 

如果我直接调用该函数在主程序(pxvaluesreal(image1,x,y)),一切工作正常。

是否可以在类型定义中定义数组维以便告知编译器,哪些是函数返回值的大小?

回答

2

内部编译器错误总是由于编译器错误。如果您使用的是最新版本的gfortran,则应考虑查看其开放漏洞列表并可能提交错误报告。

除此之外 - 您的代码不符合标准 - 传递的对象this必须是多态的(用CLASS而不是TYPE来声明)。否则,您指定的数组函数结果的大小是正确的 - 当您引用pxvalues绑定时,编译器知道函数结果的大小为5,因为它'知道'该绑定关联的特定过程pxvaluesreal的接口。

相关问题