f2c - 转换 Fortran 77 到 C 或 C++
- 名字
- 总览
- 描述
- 文件
- 参见
- 诊断
- 缺陷
名字
f2c - 转换 Fortran 77 到 C 或 C++
总览
f2c [ 选项 ... ] file ...
描述
F2c 把在当前目录中的文件名后缀是‘.f’或‘.F’的文件
file 中的 Fortran 77 源代码转换成 C (或 C++) 源文件,并用‘.c’后缀替换‘.f’或‘.F’后缀。如果没有指名一个
Fortran 文件,f2c 从标准输入读取 Fortran 并把 C
输出写到标准输出上。文件名后缀是‘.p’或‘.P’文件 file
被接受为原型文件,它是通过选项‘-P’生成的,并被首先读取。
下列选项与在 f77(1) 中的有相同的意义。
- -C
- 编译代码来检查下标是否在声明的数组边界中。
- -I2
- 把 INTEGER 和 LOGICAL
表示为短整数,INTEGER*4
为长整数。假定确省为 libF77 和 libI77: 在 INQUIRE
中只允许 INTEGER*4 (而不允许 LOGICAL)变量。选项‘-I4’确定缺省的
INTEGER 表示是长整数。
- -Idir
- 首先在当前输入文件的目录中寻找一个非绝对的包含文件,接着在用
-I 选项指定的目录 dir(每个选项一个目录)中查找。选项
-I2 和 -I4 有优先权,所以一个叫做 2
的目录应当被指定为 -I./2。
- -onetrip
- 编译 DO 循环为如果到达了这个语句则至少进行一次。(在
Fortran 77 中,如果上限小于下限则不进行 DO 循环。)
- -U
- 尊重变量和外部名字的大小写。Fortran
关键字必须是小写的。
- -u
- 使一个变量的缺省类型是‘undefined’而不是使用缺省的
Fortran 规则。
- -w
- 禁止所有警告消息,或者如果选项是‘-w66’,只禁止
Fortran 66 兼容性警告。
下列选项专属于 f2c。
- -A
- 生成 ANSI C。缺省为老式样的 C。
- -a
- 除了在 DATA、EQUIVALENCE、NAMELIST、或 SAVE
语句中之外,使局部变量成为自动变量而不是静态变量。
- -C++
- 输出 C++ 代码。
- -c
- 包含最初的 Fortran 源代码作为注释。
- -cd
- 不把 cdabs、cdcos、cdexp、cdlog、cdsin、和 cdsqrt
分别识别为双精度复数内置函数 zabs、zcos、 zexp、zlog、zsin、和
zsqrt 的同义词,不把 dreal 作为 dble 的同义词。
- -ddir
- 把‘.c’文件写在目录 dir 中而不是而不是当前目录中。
- -E
- 声明未初始化的 COMMON 为 Extern (在
f2c.h 中被重新定义为 extern)。
- -ec
- 把未初始化的 COMMON
块放置到单独的文件中: COMMON /ABC/ 出现在文件 abc_com.c
中。选项‘-e1c’把这些单独文件捆绑到输出文件中,加上给出去捆绑的
sed(1) 脚本的注释。
- -ext
- 对 f77(1) 扩展作出警告。
- -f
- 假定自由格式输入: 接受在 72
列之后的文本并且不用空格填充短于 72 列的固定格式行。
- -72
- 把在 72 列之后出现文本作为错误对待。
- -g
- 在 #line 行中包含最初的 Fortran 行号。
- -h
- 模拟 Fortran 66 的对齐(Hollerith)处理:
尝试在字边界上对齐字符串(或者,如果选项是‘-hd’则在双字边界上对齐)。
- -i2
- 类似于 -I2,但假定一个修改的 libF77 和 libI77 (使用 -Df2c_i2
编译的),所以 INTEGER 和 LOGICAL
变量可以用 INQUIRE
赋值并且数组长度可以存储在短整数中。
- -i90
- 不识别 Fortran 90 位操纵内置函数 btest、iand、ibclr、ibits、ibset、ieor、ior、ishft、和
ishftc。
- -kr
- 在 K&R(第一版)圆括号规则允许重新布置的地方,使用临时值来强制
Fortran 表达式计算。如果选项是‘-krd’,对单精度操作数也使用双精度临时值。
- -P
- 为每个输入的 file.f 或 file.F 文件写一个
ANSI (或 C++)原型文件 file.P。当从标准输入读取
Fortran 的时候,在标准输出的开始处写原型。选项 -Ps
暗含 -P 并且如果重新 f2c
运行可能改变原型或声明则给出退出状态 4。
- -p
- 提供预处理定义来使 COMMON
块成员看起来象局部变量。
- -R
- 不提升 REAL 函数和操作到 DOUBLE
PRECISION。选项‘-!R’确定为缺省,它模拟 f77。
- -r
- 把内置函数的 REAL 实际参数和 REAL 函数(包括内置函数)的值强制转换成
REAL。
- -r8
- 提升 REAL 到 DOUBLE PRECISION,提升
COMPLEX 到 DOUBLE COMPLEX。
- -s
- 保留多维下标,用选项‘-C’来禁止。
- -Tdir
- 在目录 dir 中放置临时文件。
- -trapuv
- 除了在 SAVE 和 DATA
语句中出现的之外,局部变量被动态初始化为可以帮助找到对未初始化变量的引用的值。例如,对于
IEEE 算术,初始化局部浮点变量为通告的(signaling) NaN。
- -w8
- 在 COMMON 或 EQUIVALENCE
强制双精度奇数字对齐的时候禁止警告。
- -Wn
- 在用字符数据初始化数值变量的值的时候假定 n
字符/字(缺省为 4)。
- -z
- 不隐含的识别 DOUBLE COMPLEX。
- -!bs
- 在字符串中不识别反斜杠转义(\", \', \0, \\, \b, \f, \n,
\r, \t, \v)。
- -!c
- 禁止 C 输出,但是生成 -P 输出。
- -!I
- 拒绝 include 语句。
- -!i8
- 不允许 INTEGER*8,或者如果选项是‘-!i8const’,则允许
INTEGER*8 但在整数常量涉及多于 32
位的时候不提升到 INTEGER*8。
- -!it
- 不从未知类型的 EXTERNAL
过程用做给以前定义的或原型的过程的参数来推测它的类型。
- -!P
- 不尝试从使用方法来推测 ANSI 或 C++
原型。
结果的 C 代码调用 f77 支持例程;应当使用 ld(1)
或 cc(1) 选项 -lF77 -lI77 -lm 装载目标代码。调用规范是
f77 的规范: 参见下面的引用。
文件
file.[fF] 输入文件
- *.c
- 输出文件
- /usr/include/f2c.h
- 头文件
- /usr/lib/libF77.a
- 内置函数库
- /usr/lib/libI77.a
- Fortran I/O 库
- /lib/libc.a
- C 库
参见
S. I. Feldman and P. J. Weinberger, `A Portable Fortran 77 Compiler', UNIX
Time Sharing System Programmer's Manual, Tenth Edition, Volume 2, AT&T
Bell Laboratories, 1990.
诊断
f2c 生成的诊断是力图自明的。
缺陷
浮点常量表达式被简化为运行 f2c 的机器的浮点算术,所以典型的精确到最多
16 或 17 位十进制数。
未知类型的 EXTERNAL 函数被声明为 int。
对 INTEGER*8 常量没有表示法。
一些内置函数不能用 INTEGER*8 工作。
[中文版维护人]
寒蝉退士
[中文版最新更新]
2001/12/31
《中国 Linux 论坛 man 手册页翻译计划》:
www.CMPP.net
This document was created by man2html,
using the manual pages.
Time: GMT, December 30, 2001