识别操作系统

Identify operating system

我在 Intel 编译器上的 Fortran 90 代码取决于 运行 所在的操作系统,例如

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

如何以编程方式执行此操作?

您可以为此任务使用预处理器指令,有关详细信息,请参阅here and here

  • _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 来启用预处理器。 您可以在中央位置执行此操作,例如定义描述 OS 的常量。这将避免到处都是这些 Macros。

请注意 gfortran 没有指定 Linux 的宏。由于它仍然在 Windows 上定义 _WIN32,如果您只考虑 Linux 和 Windows,您也可以使用 #else

program test

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

end program