Fortran:有条件使用模块吗?

时间:2016-05-13 21:19:30

标签: module fortran conditional gfortran

假设我有两个名为modA和modB的Fortran模块。有没有办法在基于条件语句的程序中使用其中一个?这需要某种类型的预处理吗?例如,我希望能够执行以下代码:

if (condition)
    use modA
else
    use modB
end

我使用的是GNU Fortran编译器。

1 个答案:

答案 0 :(得分:6)

是的,您必须进行某种预处理。最常见的是GNU Fortran中包含的C预处理器。

#if (condition)
    use modA
#else
    use modB
#endif

预处理器不了解您的Fortran代码,它只是一个文本。它拥有自己的一套指令和它自己的一组变量。只有预处理器变量可以在条件中使用,而不是Fortran变量。

另一个常见指令是#ifdef,它是#if defined的变体。有关更多https://gcc.gnu.org/onlinedocs/cpp/Traditional-Mode.html的信息,请参阅手册(gfortran以传统模式运行预处理器)。

要启用预处理器,请使用-cpp标志,或者在Unix中,您可以在文件后缀中使用大写F