请考虑以下代码:
module numbers
integer, parameter :: sing_prec = selected_real_kind(6)
integer, parameter :: doub_prec = selected_real_kind(15)
end module
每当我想在代码中的某个地方使用real(sing_prec) :: foo
类型的变量时,我需要在相应的程序单元中插入use numbers
。是否有可能在"全球"时尚,即使全球可用的KIND定义?
这有什么影响吗?如果在许多地方都需要这些类型,那么在任何地方插入use语句都会使代码退出。类似于编译器标志的东西,例如gfortran中的-fimplicit none
,用于强加implicit none
到处都是好的,但是我无法找到这样的旗帜。
此问题不仅限于特定的Fortran版本。
答案 0 :(得分:1)
标准的Fortran - 编号
在Fortran的编译器特定实现中 - 据我所知,当前广泛使用的编译器。所有(?)都有选项可以将默认实数(整数,复数也是)视为4或8字节,但不能选择性地将某些视为4 - 而有些视为8-(或者您希望使用的任何长度) )。
你猜错了 - 也许把所有代码放在一个范围内?
Arrrgggh 你惊恐地退缩,一个范围内的所有代码!!!
哪种方式带我到这一点=>最近的编程语言和系统倾向于增加模块化,并认为从一个范围到另一个范围显式导入定义好事。 Fortran使用use
,但其他语言中的其他类似机制则位于import
,include
等标签下。
顺便说一句,你确实知道内在模块iso_fortran_env
不是吗?您可以沿着
use iso_fortran_env, sing_prec => real32, doub_prec => real64