在函数声明中使用fortran类

时间:2011-06-17 18:30:34

标签: fortran precision function-declaration

我有一个程序,它有许多在声明中使用'kind'的函数,例如

real(kind=db) function vnorme(v)

此类声明在使用pgf90进行编译时会导致错误(但ifort工作正常):

  

PGF90-S-0087-需要常数表达式的非常数表达式(general.f:3161)   PGF90-S-0081-非法选择器 - KIND参数对于数据类型具有未知值(general.f:3161)     0通知,0警告,2 severes,0致命vnorme

db在单独的源代码文件中包含的模块中定义:

integer, parameter:: db = selected_real_kind(15)

当我用'8'替换'db'时代码正确编译。看起来编译器并不认为已经声明了db,即使函数vnorme使用了声明db的模块。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

解析函数定义的第一行时,

db还不可见。

尝试


function vnorme(v)
  use module_with_db
  implicit none
  real(db) :: vnorme
  ...
end function vnorme