我有一个程序,它有许多在声明中使用'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的模块。有办法解决这个问题吗?
答案 0 :(得分:2)
db还不可见。
尝试
function vnorme(v)
use module_with_db
implicit none
real(db) :: vnorme
...
end function vnorme