问题
My Fortran 90 code on Intel compiler depends on the operating system it is running on, e.g.
if (OS=="win7") then
do X
else if (OS=="linux") then
do y
end if
How do I do this programmatically?
回答1:
You can use pre-processor directives for this task, see here and here for details:
_WIN32for Windows__linuxfor Linux__APPLE__for Mac OSX
Here is an example:
program test
#ifdef _WIN32
print *,'Windows'
#endif
#ifdef __linux
print *,'Linux'
#endif
end program
Make sure you enable the pre-processor by either specifying -fpp//fpp or given the file a capital F/F90 in the extension.
You could do this in a central location, do define e.g. a constant describing the OS. This would avoid these Macros all over the place.
Please note that no macro for Linux is specified by gfortran. As it still defines _WIN32 on Windows, you can alternatively use #else if you just consider Linux and Windows:
program test
#ifdef _WIN32
print *,'Windows'
#else
print *,'Linux'
#endif
end program
来源:https://stackoverflow.com/questions/33813632/identify-operating-system