假设我有两个名为modA和modB的Fortran模块。有没有办法在基于条件语句的程序中使用其中一个?这需要某种类型的预处理吗?例如,我希望能够执行以下代码:
if (condition)
use modA
else
use modB
end
我使用的是GNU Fortran编译器。
答案 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
。