将Fortran转换为C或C++

Dav*_*eis 3 c c++ fortran

我有一些数字代码,我需要转换为C或C++.我尝试使用f2c,但它不适用于Fortran代码.f2c抱怨因为代码使用C样式预处理器指令(#include).代码的自述文件声明它是Fortran77,与fort77链接器一起使用,可以扩展那些包含.

有谁知道如何成功转换此代码?

我最后的办法是编写一个简单的预处理器来扩展这些包含,然后将代码提供给f2c.

注意:我在这里工作在Windows/Visual C++环境中,所以任何gcc恶作剧都可能比它们的价值更麻烦......

tva*_*son 9

我在一个工程研究小组工作了很多年.从Fortran到C的自动转换从来没有好运.代码不是特别容易理解,而且难以维护.我们最好的运气是使用Fortran代码作为算法的模板,并对我们希望继续使用的任何内容进行重新实现.或者,您可以更新Fortran以使用更现代的Fortran构造,并获得与迁移到C/C++时相同的许多值.我们也从C调用Fortran例程取得了一些成功,尽管调用约定的差异有时会使事情变得困难.


Pau*_*her 8

这个 可能有点不知所措,但你有没有考虑过,因为你可能正在使用C风格的包含,你可以在文件上运行C预处理器以包含这些文件?然后,您可以获取输出并通过f2c运行它.

(我不是这方面的专家.如果合适的话,请将其投票.)


bug*_*net 7

您可以通过手动转换来逃避

#include"whatsit.f90"

包括'whatsit.f90'

然后再次尝试f2c转换.