我需要帮助将代码形式Fortran转换为C.

时间:2015-02-17 14:18:16

标签: c fortran gfortran

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

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' 

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

1 个答案:

答案 0 :(得分:3)

如果要在C中定义常量,可以使用#define PI 3.1415926。如果您不想在任何地方复制此内容,那么您可以使用#include这样的内容:

首先是一个标题(在名为MyConsts.h的文件中):

/* My constants */
#define PI 3.1415926

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

/* A module */
#include "MyConsts.h" // include here the contents of the file
...
double p = 2*PI*r;
...

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

/* Another module */
#include "MyConsts.h" // include here the contents of the file
...
double s = PI*r*r;
...

如果您通过描述Makefile中的依赖关系来使用干净的编译过程,那么MyConsts.h中的每个修改都将反映到对象模块中。