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

时间:2015-08-17 00:30:08

标签: fortran

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

2 个答案:

答案 0 :(得分:2)

您有几个选择。

  1. 这不符合您的问题直接要求,但是如果选择正确子程序的if语句通常成本可以忽略不计。使用确定要使用的子例程的输入文件是一种可以处理多个案例的可执行文件的好方法。
  2. 有Fortran预处理器;使用预处理器(如fpp)是编译代码以定位特定子例程的正确方法。
  3. 对于脚本语言来说,这是一个很大的问题;如果你不懂一种非常适合处理字符串的语言,这可能就是你的机会!我写了一个程序bake,因为我遇到了类似于你的问题。制作一个程序来管理我的Fortran代码给了我很好的编写Python的经验,这就是我现在每天都在使用的。欢迎您使用烘焙,但您可能想制作自己的烘焙食品。

答案 1 :(得分:1)

Linux上的GNU Fortran曾经能够运行带有条件#define#ifdef和类似的

的C预处理器

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

更新

它(C preproscessor)可用于任何具有显式GNU fortran选项的任何扩展名的fortran文件-cpp