如何使用*.h文件编译此旧版FORTRAN 77代码?

Bob*_*Bob 3 fortran header-files fortran-common-block

我有一个.F和.H文件的集合,构成FORTRAN代码.我遇到麻烦来编译.H文件..H文件包含一堆公共块.其中一个.H文件的示例是:

*AC HEAD      
c                                                                       HEAD 1
      common/blah/ x(25), y, z(25), p(25,mnv),                          HEAD 2
     1                t(25,mx), d(25,mnv)                               HEAD 3
c                                                                       HEAD 4
ETC...
Run Code Online (Sandbox Code Playgroud)

当我在谷歌搜索答案时,据说.h文件是c/c ++文件,但它们看起来不像是用c/c ++编写的.gfortran似乎也认为它们是C文件.

当我尝试编译时:

gfortran-4.5 -fdefault-real-8 -fbacktrace -fno-align-commons HEAD.h

我得到错误:

cc1: warning: command line option "-fdefault-real-8" is valid for Fortran but not for C
cc1: warning: command line option "-fbacktrace" is valid for Fortran but not for C
cc1: warning: command line option "-fno-align-commons" is valid for Fortran but not for C
HEAD.h:1:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘HEAD’
Run Code Online (Sandbox Code Playgroud)

我试图将第一行'*AC HEAD'注释掉,但之后的错误是在*之前查找属性.我是否需要在最后一列中使用HEAD#值来解决这个问题,我是否需要使用C++编译器构建.H文件或者什么?

Jon*_*rsi 7

你不编译那些.如果你grep其他fortran文件,你会看到它们被包含在使用类似的东西include HEAD.h或'#include"head.h"'(第二个是我的猜测;我猜你正在运行C预处理器fortran文件).那些include语句基本上是在.h文件的副本中读取的,只要include语句在编译过程中.所以它是一段使用过的代码,但从未编译过.

这在Fortran中包含的头文件是不是最好的做法任何更长,更是这样,因为他们已经习惯了通过代码分布广泛的公共块.所以不要使用这种方法编写任何新代码.但这就是这个特殊的旧代码正在做的事情.