【发布时间】:2013-11-04 16:21:20
【问题描述】:
我想使用一些用 Fortran 编写的光散射代码。我非常熟悉 MATLAB 并自学 C++,但现在 Fortran 让我很伤心。
我刚刚让 Photran 与 Eclipse 一起工作,它可以编译(根据 Photrans 说明使用 Cygwin 中的 Gfortran)我在网上找到的示例 Fortran 程序。
我想开始工作的主要是:http://www.ugr.es/~aquiran/ciencia/codigos/homer.f(注意一半以上只是控制台输出和 cmets,实际代码很小)。
我实际上已经在 Mathematica 中编写了一个程序,它已经完成了这些计算,但我觉得这将是一个很好的测试案例,让我在 Fortran 中动手并转向其他代码。如果有人能指出我正确的方向来进行编译,那就太好了。谢谢。
编辑:所以我只用最多(只是警告)编译它
OPEN (1,FILE='q.dat')
我添加的第二个
DO I=1,5
WRITE (*,*)
END DO
我收到 3 个错误:
删除 DO 后,我可以添加文字,例如。
WRITE (*,*) 'This code calculates cross-efficiencies for'
它会编译并生成 .exe。我猜 DO 给我带来了问题。
【问题讨论】:
-
如果您在这里发布一些代码,以及您尝试编译时遇到的错误,您可能会有更好的运气。
-
如果您已经编译了示例 Fortran 程序,并且我猜想正在执行,那么是什么阻止您编译和执行自己的程序?我真的没有看到你的问题,而且你的问题对于你想被告知的内容非常模糊。哦,我当然不会阅读您指给我们的代码,我可能会阅读您问题中的合理数量的代码。
-
仔细阅读错误信息。您的编译器实际上只在代码中发现了 1 个错误 (
Symbol 'i' at (1) has no IMPLICIT type),其他两个错误是其直接后果。 -
@SteveHatcher 不要删除
IMPLICIT NONE。而是在程序/过程/子例程(具有DO I=1,5的顶级程序部分)的顶部写入INTEGER I声明。如果您使用隐式声明,您将面临各种类型错误的错误,这些错误由于某种原因未被编译器捕获。您确定要记住默认情况下名称以A开头的变量/函数是否具有REAL、INTEGER或英文字母表中每个字母的任何类型? -
删除
IMPLICIT NONE并没有解决任何问题,它使编译器不会向您报告潜在的严重问题。删除IMPLICIT NONE会使事情变得更糟而不是更好。如果您不明白为什么会这样,请转到基础 Fortran 教程并再次阅读该章节。