识别操作系统
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
我在 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