2016-05-13 8 views
5

Angenommen, ich habe zwei Fortran-Module namens modA und modB. Gibt es eine Möglichkeit, das eine oder andere in einem Programm basierend auf einer bedingten Anweisung zu verwenden? Benötigt dies irgendeine Art von Vorverarbeitung? Zum Beispiel möchte ich in die Lage sein, etwas wie der folgenden Code zu tun:Fortran: Gibt es eine Möglichkeit, Module bedingt zu verwenden?

if (condition) 
    use modA 
else 
    use modB 
end 

ich den GNU-Fortran-Compiler verwenden.

Antwort

6

Ja, Sie müssen eine Art Vorverarbeitung durchführen. Am gebräuchlichsten ist der in GNU Fortran enthaltene C-Präprozessor.

Der Präprozessor versteht Ihren Fortran-Code nicht, es ist nur ein Text dafür. Es hat seinen eigenen Satz von Direktiven und seine eigenen Variablen. Nur die Präprozessorvariablen können in der Bedingung verwendet werden, nicht Ihre Fortran-Variablen.

Eine andere allgemeine Direktive ist #ifdef, die eine Variante von #if defined ist. Weitere Informationen finden Sie im Handbuch https://gcc.gnu.org/onlinedocs/cpp/Traditional-Mode.html (gfortran führt den Präprozessor im traditionellen Modus aus).

Um den Präprozessor mit dem Flag -cpp oder in Unix zu aktivieren, können Sie in der Dateiendung den Großbuchstaben F verwenden.