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