【发布时间】:2017-05-18 13:14:37
【问题描述】:
我正在我的 Fortran 90 代码中寻找 #ifdef #else #enddef 的替代方法。
是否有另一种方法来控制调用模块时执行的 use 语句?我想摆脱复杂系统中的#include 文件。
例如,这就是我现在所拥有的。
#include "defs.h"
module X
#ifdef Sys
use ....
#else
use ....
#endif
implicit none
snip...
#ifdef Sys
some block of code...
#else
some block of code...
#endif
end module X
在 defs.h 中定义了 Sys。我想找到使用 defs.h 来控制代码的#ifdef.... 部分的替代方法。
感谢您对此的任何想法。
【问题讨论】:
-
#include的使用与#ifdef等的使用不是完全分开的吗?你想避免这两种结构还是只使用#include? -
我正在使用 FCM 编译一个 fortran 系统,这是一个对我来说非常新且未知的系统。即使路径正确,它也找不到我添加的包含文件。我想控制使用
#ifdef XXX控制的某些“使用”命令和块代码的执行,其中XXX在#include文件中定义。所以是的,如果可能的话,我想避免这两种结构。对于代码的块部分执行此操作很容易,但序言,即use ....更难,而且我遇到问题的部分。 -
展示代码示例并说明您正在做什么会非常有帮助。否则人们会开始提出建议,而您会说由于某些您未提及的原因它不适用。
-
好的。我添加了一个例子。我希望这可以减少歧义。
-
我应该注意到您的真正问题似乎是在使用 FCM 时
cannot find a include file that I added even though the paths are correct.,最好专注于解决此问题而不是想出解决方法?
标签: fortran c-preprocessor fortran90 preprocessor