Определить операционную систему

Мой код Fortran 90 на компиляторе Intel зависит от операционной системы, в которой он работает, например

if (OS=="win7") then
   do X
else if (OS=="linux") then
   do y
end if

Как мне сделать это программно?

1 ответ

Решение

Для этой задачи вы можете использовать директивы препроцессора, подробности смотрите здесь и здесь:

  • _WIN32 для Windows
  • __linux для Linux
  • __APPLE__ для Mac OSX

Вот пример:

program test

#ifdef _WIN32
  print *,'Windows'
#endif
#ifdef __linux
  print *,'Linux'
#endif

end program

Убедитесь, что вы включили препроцессор, либо указав -fpp//fpp или учитывая файл заглавной F/F90 в расширении. Вы можете сделать это в центральном месте, определив, например, константу, описывающую ОС. Это позволит избежать этих макросов повсюду.

Обратите внимание, что макрос для Linux не указан gfortran, Как это все еще определяет _WIN32 в Windows вы можете использовать альтернативно #else если вы просто рассматриваете Linux и Windows:

program test

#ifdef _WIN32
  print *,'Windows'
#else
  print *,'Linux'
#endif

end program
Другие вопросы по тегам