我需要帮助将Fortran格式的代码转换为C

我需要帮助将Fortran格式的代码转换为C,c,fortran,gfortran,C,Fortran,Gfortran,我是编程新手。我需要将Fortran 95文件转换为C文件。在Fortran文件的开头,我有一个模块,其中包含一组在各种函数中使用的变量(不要介意注释): 有没有一种方法可以在C中复制这一点?我知道我可以使用命令#define variable x,但我不知道它是否正确;我的目标是在代码中的某个地方定义这些常量,这样,如果我修改一个常量,程序的每个部分都可以知道我分配的新值。当然,我可以在代码中的每个函数中定义每个常量,但这将是极大的浪费时间。如果您想在C中定义常量,可以使用\define PI

我是编程新手。我需要将Fortran 95文件转换为C文件。在Fortran文件的开头,我有一个模块,其中包含一组在各种函数中使用的变量(不要介意注释):


有没有一种方法可以在C中复制这一点?我知道我可以使用命令
#define variable x
,但我不知道它是否正确;我的目标是在代码中的某个地方定义这些常量,这样,如果我修改一个常量,程序的每个部分都可以知道我分配的新值。当然,我可以在代码中的每个函数中定义每个常量,但这将是极大的浪费时间。

如果您想在C中定义常量,可以使用
\define PI 3.1415926
。如果您不想在任何地方重复此操作,则可以使用如下的
#include
s:

首先是头(在名为
MyConsts.h
的文件中):

然后是一个模块(在一些
.c
文件中):

和另一个(在另一个
.c
文件中):


例如,如果您通过在
生成文件中描述依赖项来使用干净的编译过程,那么在
MyConsts.h
中所做的每一次修改都将反映到对象模块中。

#define
用于常量,而不是变量。如果以后更改它们,请执行类似于
[type]x=[value]
的操作,其中[type]是您想要的任何类型(int、float、double、char等),value是要分配给它的值。
参数
FORTRAN常量是否为no?那么为什么要在C中修改它们呢?你不是真的想翻译,还是我错了?对不起,我的词汇量太大了,但我不是程序专家;其思想是在代码的开头有一些参数,以便整个程序都能看到它们;如果我改变了其中一个,每个函数和主函数都知道我设置的新值。如果我理解你的问题,你可以看看我的答案。我建议你买一本关于C的好教科书。你可能遇到的问题可能会在那里得到回答。经典的是Kernighan&Richie,“C编程语言”,但得到了第二版(包括第一个ANSI标准)。如果你也不懂Fortran,那就买一本好的Fortran教科书。但是你会遇到很多问题,,特别是如果您试图翻译的Fortran程序使用多维数组和/或以表意风格编写,使用了现代Fortran的许多功能,如假定形状数组。我还有一个问题:如果我想做同样的事情,但在mycstant.h文件中使用float和int,该怎么办
123
是int-literal,
123.5
是double,
123.5f
是float,等等。看看web上的“C常量literals”(虽然这是一个很好的演示,但实际上每个人都应该有自己的)
MODULE data

IMPLICIT NONE
SAVE

DOUBLE PRECISION, PARAMETER :: tmax_dsmc  = 450.D0     ! durata simulazione
DOUBLE PRECISION, PARAMETER :: tim_dsmc   = 150.D0     ! istante inizio campionamento
DOUBLE PRECISION, PARAMETER :: dt_dsmc    = 0.05D0     ! passo temporale
DOUBLE PRECISION, PARAMETER :: alpha_dsmc = 0.02D0     ! gradiente velocita' 
/* My constants */
#define PI 3.1415926
/* A module */
#include "MyConsts.h" // include here the contents of the file
...
double p = 2*PI*r;
...
/* Another module */
#include "MyConsts.h" // include here the contents of the file
...
double s = PI*r*r;
...