新浪博客

Fortran常见编译错误 compile error

2017-03-26 21:48阅读:
在编译时常出现以下错误: 摘录

Q0001: CVFSevere: Invalid argument , Error executing df.exe
编译错误提示类似于:f90: Severe: Invalid argument ... file is 'C:\?D??\fcode.f90' Error executing df.exe
原因:这是由于 Compaq Visual Fortran 不支持中文路径下的源代码文件。源代码文件名作为参数(argument )传递给编译器(df.exe )被认为是非法的(Invalid 因为含有中文)。
解决:将源代码文件放入英文路径下重新编译。

Q0002: CVF / IVF Error spawning df.exe The Fortran compiler (ifort.exe) c
annot be found.
原因:这多半是由于编译器安装不合适造成的,或者安装时未设置合理的环境变量。执行
编译器( df.exeifort.exe ) 失败或根本找不到。
解决:重新安装编译器(win7/win8 下请不要使用 CVF ),注意安装时如选择是否设置环境变量,选 Yes

Q0003: CVF / IVF Unrecognized token '?' skipped
原因:代码中出现了编译器无法识别的字符。
解决:首先检查自己的源代码文件是否为 ANSI 码,而不是 Unicode 编码或其他。然后检查错误行,是否存在特殊字符?包括除字符串常量和注释行之外的中文。尤其注意括号,逗号,冒号是否是半角?

Q0004: CVF / IVF Syntax error
原因:语法错误
解决:语法错误的可能性很多,但凡违反语法规定的写法,都可能出这个错误。认真检查错误行,某些编译器可能会给出更详细的错误提示,翻译一下会更便于查找错误。

Q0005: CVF / IVF Unbalanced parentheses

原因:括号不成对出现,例如 a(3))

解决:检查错误行的括号,确保成对出现。

Q0006: CVF / IVF An unterminated block exists.

原因:IfDo 等区块没有结束。

解决:检查 If 是否有 EndIf 对应,Do 是否有 End Do 对应

Q0007: CVF / IVF A specification statement cannot appear in the executable section.

原因:声明语句出现在了执行语句中

解决:所有声明语句必须在所有执行语句前面,即先声明所有变量,然后才有执行语句。

调整这些语句的顺序既可。

Q0008: CVF / IVF The type of the actual argument differs from the type of the dummy argument. [SOME].
原因:SOME 作为实参,它的的类型与对应的虚参不一致

解决:我们建议所有实参与对应的虚参具有相同的类型,精度,大小和数组上下限。检查

一下被提示的变量,其类型精度是否与虚参一致?尤其是没有使用 Implicit None 的程序单

元,默认 IN 规则情况下,容易发生类型不一致。

Q0009: CVF / IVF Cannot open include file '文件名.inc'

原因:文件名.inc 做为被包含文件,无法打开

解决:

1.检查是否存在 文件名.inc

2.检查 文件名.inc 是否在你的工程目录(文件夹);

3.检查该文件是否被隐藏了扩展名,有时候我们看起来是 文件名.inc ,其实是 文件

.inc.txt ,我建议取消隐藏扩展名设置。方法是 打开我的电脑,工具,文件夹选项,查看,

取消隐藏已知文件扩展名

4.检查该文件是否是 ANSI 编码,用记事本打开,文件另存为时既可查看编码,请确保是 ANSI 的,而不是 unicode utf-8 等;

Q0010: CVF / IVF Recommended relationship between field width 'W' and the number of fractional digits 'D' in this edit descriptor is 'W>=D+3'
原因:浮点数格式输出符中,W < D+3
解决:由于浮点数输出时,需输出至少一位整数,一个小数点,(可能的)一个负号。所以,建议宽度 W 大于小数点后的 D + 3。比如 3.1415 ,格式为 F6.4 6 只比 42
如果遇到负数,就会无法输出负号。造成 ****** 出现。
注意,这只是一个警告,如果你确定不会有负数,则可以无需干涉。
同理,对于科学计数法,会有 W>=D+7 的要求。比如3.1415E+35 ,格式为 ES10.4 10 只比46 ,遇到负号无法输出。

Q0011: CVF / IVF The statement label ?? is referenced but not defined in this scope.
原因:某语句标号的语句被使用了,但没有定义。比如 goto 100 ,但没有 100 这句标号的 语句。
解决:补齐语句标号语句,或者取消对该标号语句的使用。

我的更多文章

下载客户端阅读体验更佳

APP专享