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
INTEGERLOGICAL 表示为短整数,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
声明未初始化的 COMMONExtern (在 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 编译的),所以 INTEGERLOGICAL 变量可以用 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
提升 REALDOUBLE PRECISION,提升 COMPLEXDOUBLE COMPLEX。
-s
保留多维下标,用选项‘-C’来禁止。
-Tdir
在目录 dir 中放置临时文件。
-trapuv
除了在 SAVEDATA 语句中出现的之外,局部变量被动态初始化为可以帮助找到对未初始化变量的引用的值。例如,对于 IEEE 算术,初始化局部浮点变量为通告的(signaling) NaN。
-w8
COMMONEQUIVALENCE 强制双精度奇数字对齐的时候禁止警告。
-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