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文件或者什么?
你不编译那些.如果你grep其他fortran文件,你会看到它们被包含在使用类似的东西include HEAD.h或'#include"head.h"'(第二个是我的猜测;我猜你正在运行C预处理器fortran文件).那些include语句基本上是在.h文件的副本中读取的,只要include语句在编译过程中.所以它是一段使用过的代码,但从未编译过.
这在Fortran中包含的头文件是不是最好的做法任何更长,更是这样,因为他们已经习惯了通过代码分布广泛的公共块.所以不要使用这种方法编写任何新代码.但这就是这个特殊的旧代码正在做的事情.
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |