如何识别fortran标准&x27;77和"x27 ;;90或';95?
我有一段fortran代码,我不确定它是哪一种标准——“77”、“90”还是“95”。是否有一个标准工具来识别它所遵循的标准?如果您可以访问(gfortran),您可以尝试使用如何识别fortran标准&x27;77和"x27 ;;90或';95?,fortran,Fortran,我有一段fortran代码,我不确定它是哪一种标准——“77”、“90”还是“95”。是否有一个标准工具来识别它所遵循的标准?如果您可以访问(gfortran),您可以尝试使用--std的不同选项来编译它,并查看哪个选项有效。您可以找到方言选项的详细信息。可能有自动工具,但我的方法主要是启发式的: 注释是否使用行中的任意位置(F90+)或第一列(F77)中的aC 循环是否使用Do。end Do(F90+)或Do。继续(F77) 是否在行的末尾(F90+)或第6列(f77)中使用和继续行 代码是
--std
的不同选项来编译它,并查看哪个选项有效。您可以找到方言选项的详细信息。可能有自动工具,但我的方法主要是启发式的:
- 注释是否使用
代码>行中的任意位置(F90+)或第一列(F77)中的a
C
- 循环是否使用
。Do
(F90+)或end Do
。Do
继续
(F77)
- 是否在行的末尾(F90+)或第6列(f77)中使用
和
继续行
- 代码是否使用
或模块
结构(F90)类型
- 如果代码使用数组,它是作为单个结构(F90)在数组上运行还是始终使用循环(F77)
- 是否使用动态内存(使用
或可分配
方法)(F90)指针
通常,这些足以区分F90和F77。Fortran 90和Fortran 77之间的差异远远大于Fortran 90和Fortran 95之间的差异,所以我通常就到此为止 我在fortran 2003和2008中添加了一些功能(这些功能我都想不起来了) 如果程序已参数化派生数据类型(fortran 2003) 如果数组构造函数使用方括号[]而不是(//)(fortran 2003) 如您所见,有使用coarray的规定(fortran 2008) 虽然许多编译器都有特殊的函数(如贝塞尔函数)作为扩展的一部分,但它确实是fortran 2008的一个功能
(如果有任何差异,请让我知道我将进行编辑)有几个点区分固定源代码和自由源代码形式,而不是Fortran 77和Fortran 90。固定源代码格式(第一列中有C,第6列中有C,等等)即使对于Fortran 2008也是完全合法的。
-std=legacy
标志无法区分77和90。