使用子程序实现print语句的强大功能而无需预处理?

时间:2017-07-23 03:08:00

标签: fortran preprocessor generic-programming

由于Fortran子例程需要声明所有内容,因此我们无法轻松编写具有与print语句相同的功能和灵活性的自定义打印子例程。

在整个代码中,我们有print语句,每个语句都有多个if语句来处理并行处理和选择的调试输出模式。打印了许多不同类型的具有不同格式的变量,包括具有各自do循环的矩阵。

除了代表其调试模式的一个整数之外,我们只想正常编写一个print语句,然后找到一种方法来为每个语句包含所有相应的if语句。尝试使用子程序实现这一点是可以通过通用接口实现的,但需要大量的接口情况,涵盖所有可能的输入安排。然而,通过预处理替换,这更加简单。我错过了一些非常有用的东西吗?

1 个答案:

答案 0 :(得分:2)

您可能会发现一个有用的设备,使用字符串内部的内部write,然后将字符串传递给调试处理子例程,例如:

    character(len=100) :: string
    ...
    write(string,*)"var1:",var1,"var2:",var2
    call debugout(string,debugflags)

然后在子程序中,您可以让您的开关决定如何处理字符串。