我有一个主程序和一个模块。我希望主程序在正常情况下使用模块的某些部分,但如果使用“DEBUG”cpp 宏编译,则使用一些添加的元素。这是我发现的使这项工作有效的方法:
program myprogram
use comp_module, only: data1, routine1 &
#idef DEBUG
, debug_data, debug routine
#endif
;
....
如果我不在末尾添加分号,编译器会在未编译进行调试时认为这是一个错误。所以,这有效。
只是它看起来有点不优雅,调试行中有一个前导逗号,后面有一个无用的分号。我可以看到一些开发人员稍后出现,不明白发生了什么,并重新引入编译器错误。
有什么更好的办法呢?
在这种情况下,您可以只使用两个单独的
use
声明您已被告知处理此问题的最佳方法:两个单独的 USE 语句。还有一些额外的、可能具有教育意义的东西需要添加。例如:
在 Fortran 2003 中,不允许在行的开头使用分号:分号只能用于分隔“行内”的语句。这里有一些方法可以修改解决方法,但是,由于更好的方法没有必要,而且 Fortran 2003 太旧了,所以我不会展开。
提到的编译器错误来自于自由格式源代码中延续的工作方式。一旦
&
出现,我们就表示线路将继续。行继续查找后续的非注释行:也就是说,第一个非注释行被视为继续 use 语句。如果这不是分号或有意义的东西,那么编译器会感到不安。
最后,有一种使用单个 USE 语句且不使用分号的方法:
这没什么值得推荐的。