Какой макрос отличает ifort от других компиляторов фортрана? - PullRequest
4 голосов
/ 26 марта 2010

Я работаю с кодом Fortran, который должен работать с различными компиляторами Fortran (и взаимодействует как с C ++, так и с кодом Java). В настоящее время мы работаем с gfortran и g95, но я исследую, что нужно сделать, чтобы заставить его работать с ifort, и первая проблема, с которой я столкнулся, это выяснить, как определить в исходном коде, использует ли он ifort или нет.

Например, у меня сейчас есть этот кусок кода:

#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__

Что за макрос для ifort? Я пытался IFORT , но это было неправильно, и дальнейшие предположения не кажутся продуктивными. Я также попытался прочитать справочную страницу, используя ifort -help и Google.

Ответы [ 2 ]

7 голосов
/ 26 марта 2010
2 голосов
/ 26 марта 2010

Согласно своим документам, они определяют __INTEL_COMPILER = 910. 910 может быть номером версии, но вы, вероятно, можете просто #ifdef на нем.

Я должен отметить, что ifort не разрешает макросы, если вы не включили его явным образом с флагом / fpp.

...