【问题标题】:Problems with parametrized derived types in Fortran 2003Fortran 2003 中参数化派生类型的问题
【发布时间】:2014-06-23 17:44:22
【问题描述】:

我正在自学 Fortran 2003 以用于我目前正在进行的研究项目。我已经习惯了 Fortran 90,但是这个项目需要使用参数化类型,所以我要转到 2003 年。

我正在关注this site's关于如何定义参数化类型的描述,并根据该站点的示例编写了一个非常简单的示例程序来测试它:

module example
implicit none

  type :: param_matrix(k,a,b)
     integer, kind :: k
     integer, len :: a
     integer, len :: b
     real(kind=k), dimension(a,b) :: m
  end type param_matrix

end module example

当我用命令编译它时

gfortran -c test.F03

我得到错误

test.F03:4.2:

  type :: param_matrix(k, a, b)

  1

Error: Unclassifiable statement at (1)

test.F03:5.13:

     integer, kind :: k

             1

Error: Invalid character in name at (1)

test.F03:6.13:

     integer, len :: a

             1

Error: Invalid character in name at (1)

test.F03:7.13:

     integer, len :: b

             1

Error: Invalid character in name at (1)

test.F03:8.16:

     real(kind=k), dimension(a,b) :: m

                1

Error: Symbol 'k' at (1) has no IMPLICIT type

test.F03:9.5:

  end type param_matrix

     1

Error: Expecting END MODULE statement at (1)

当我删除公式的参数化部分时,它编译得很好(也就是说,它可以识别类型)。 Fortran 2003 特有的任何东西似乎都特别麻烦,但是当我使用命令运行时

-std=f2003

它仍然有同样的问题。可能会发生什么?

【问题讨论】:

    标签: types fortran gfortran fortran2003


    【解决方案1】:

    gfortran 中尚未实现参数化派生类型:

    https://gcc.gnu.org/wiki/OOP(参见未实现的功能

    目前,只有 Cray、PGI 和 IBM Fortran 编译器支持此功能:

    http://fortranwiki.org/fortran/show/Fortran+2003+status

    【讨论】:

    • 我相信英特尔从 15.x 版本 (9/15) 起名义上支持此功能
    猜你喜欢
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 2019-03-02
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多