Je travaille avec du code Fortran qui doit fonctionner avec différents compilateurs Fortran (et qui interagit avec le code C++ et Java). Actuellement, nous travaillons avec gfortran et g95, mais je suis en train de rechercher ce qu'il faudrait faire pour le faire fonctionner avec ifort, et le premier problème que je rencontre est de savoir comment déterminer dans le code source s'il utilise ifort ou ne pas.Quelle est la macro pour distinguer ifort des autres compilateurs Fortran?
Par exemple, j'ai actuellement ce morceau de code:
#if defined(__GFORTRAN__)
// Macro to add name-mangling bits to fortran symbols. Currently for gfortran only
#define MODFUNCNAME(mod,fname) __ ## mod ## _MOD_ ## fname
#else
// Macro to add name-mangling bits to fortran symbols. Currently for g95 only
#define MODFUNCNAME(mod,fname) mod ## _MP_ ## fname
#endif // if __GFORTRAN__
Quelle est la macro pour ifort? J'ai essayé IFORT, mais ce n'était pas correct, et deviner plus ne semble pas productif. J'ai également essayé de lire la page man, en utilisant ifort -help
, et Google.
Je sais que je suis très en retard à cette question, mais je voulais juste poster une note rapide sur le style: le cas par défaut dans une clause '#if defined' devrait être une erreur pour éviter tout comportement inattendu. Essayez donc d'utiliser quelque chose comme '#if defined (__ GFORTRAN__) ... #elif defined (__ INTEL_COMPILER) ... #else ... #error" La macro de gestion des noms n'est pas définie pour votre compilateur. "' – Chris
@Chris: very bon point –