Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在fortran的make文件中使用if语句编译代码?_Fortran - Fatal编程技术网

如何在fortran的make文件中使用if语句编译代码?

如何在fortran的make文件中使用if语句编译代码?,fortran,Fortran,我正在使用fortran代码来编写我的代码。我在循环中使用一个子例程。对于我的各种运行,子例程的名称是不同的(我已经编写了所有的子例程)。所以,每当我想为不同的情况运行代码时,我必须相应地更改子例程的名称。我不想一次又一次地修改我的代码。我要两个人写一个全局代码。我可以在代码中使用带有“If语句”的所有子例程。在这种情况下,我将不必每次都修改我的代码。但通过这种方式,每一步都会运行一个额外的if语句。是否有可能以这样的方式编写代码:我给出某个参数的值,代码只使用我想要的子例程进行编译,而不使用任

我正在使用fortran代码来编写我的代码。我在循环中使用一个子例程。对于我的各种运行,子例程的名称是不同的(我已经编写了所有的子例程)。所以,每当我想为不同的情况运行代码时,我必须相应地更改子例程的名称。我不想一次又一次地修改我的代码。我要两个人写一个全局代码。我可以在代码中使用带有“If语句”的所有子例程。在这种情况下,我将不必每次都修改我的代码。但通过这种方式,每一步都会运行一个额外的if语句。是否有可能以这样的方式编写代码:我给出某个参数的值,代码只使用我想要的子例程进行编译,而不使用任何额外的循环或语句。或者我们可以通过在make文件中使用if语句来实现。谢谢

您有一些选择

  • 这不符合您的问题直接要求的内容,但是使用if语句来选择正确的子例程通常成本可以忽略不计。使用确定要使用的子例程的输入文件是一种很好的方法,可以使一个可执行文件处理多个情况
  • 有Fortran预处理器;使用预处理器(如fpp)是使您的代码以特定子例程为目标进行编译的正确方法
  • 这对于脚本语言来说是一个很大的问题;如果您不知道一种非常适合处理字符串的语言,这可能是您的机会!我写了一个程序,因为我有一个类似于你的问题。制作一个程序来管理我的Fortran代码给了我编写Python的丰富经验,这也是我现在每天使用的东西。欢迎您使用bake,但您可能想自己制作

  • Linux上的GNU Fortran过去具有运行C预处理器的能力,该预处理器具有条件
    \define
    \ifdef
    和类似功能

    为此,必须将Fortran代码扩展名设置为.F或.F90(注意大写
    F

    更新


    它(C预处理器)可以用于任何扩展名为GNU fortran的fortran文件,并带有明确的GNU fortran选项-cpp

    fortran可以预处理与C预处理器类似的代码(或者在某些情况下实际上是相同的预处理器)。看看这个,甚至还有过程指针,但是,实际上,你应该展示一些代码,或者我们只是给出一些大致的提示。