cst*_*ats 5 conditional fortran module gfortran
假设我有两个名为modA和modB的Fortran模块.有没有办法在基于条件语句的程序中使用其中一个?这需要某种类型的预处理吗?例如,我希望能够执行以下代码:
if (condition)
use modA
else
use modB
end
Run Code Online (Sandbox Code Playgroud)
我正在使用GNU Fortran编译器.
是的,你必须做某种预处理.最常见的是GNU Fortran中包含的C预处理器.
#if (condition)
use modA
#else
use modB
#endif
Run Code Online (Sandbox Code Playgroud)
预处理器不了解您的Fortran代码,它只是一个文本.它有自己的一组指令和它自己的一组变量.只有预处理器变量可以在条件中使用,而不是Fortran变量.
另一个常见指令是#ifdef哪种变体#if defined.有关更多信息,请参阅手册https://gcc.gnu.org/onlinedocs/cpp/Traditional-Mode.html(gfortran以传统模式运行预处理器).
要启用预处理器,请使用-cpp标志或在Unix中,您可以F在文件后缀中使用capital .
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |