Bonjour,
Existe - t - il en Fortran 77 l'équivalence des #ifdef, #undef, #define du C?
merci...
Bonjour,
Existe - t - il en Fortran 77 l'équivalence des #ifdef, #undef, #define du C?
merci...
Il est possible de faire tourner le preprocesseur C (cpp) sur des fichiers sources Fortran avant de les envoyer au compilateur Fortran.
je suis sincèrement désolée, mais je ne comprends pas ta réponse...
Ok. En C, les mot-cles commencant par # sont des directives pre-processeur. Elles sont analysees par un executable special, appele cpp pour C pre-processor. Une fois l'analyse terminee, le fichier resultat est envoye au compilateur C. L'idee est de faire pareil, mais avec un fichier Fortran.
Disons que tu as, par exemple, le fichier Fortran suivant:
On lui applique cpp (j'utilise la version GNU, donc il faut lui dire de ne pas formatter le fichier sortie au format "gcc", option -P)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 program toto implicit none #if 0 write(6,'(a)') 'Hello !' #else write(6,'(a)') 'World !' #endif end
Je verifie que toto_cpp.f contient bien ce que je souhaite:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cpp -P toto.f > toto_cpp.f
Je n'ai plus qu'a compiler...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 program toto implicit none write(6,('a)') 'World !' end
et ca fonctionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ifort toto.f -o toto
Evidemment, on peut automatiser tout cela dans un Makefile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3./toto World !
Attention, rigoureusement parlant, cela reste de l'abus du pre-processeur C. Mais pour tout ce qui est compilation conditionnelle, c'est parfait. Evidemment, il est preferable d'eviter de faire des #include des en-tetes standard du C, et d'utiliser des valeurs qui ont ete #define'd...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager