4

Could you tell me please how can I do the following:

#if __unix__
#define path_sep='/'
#elif __windows__
#define path_sep='\'
#else
#error "path_sep not defined."
#endif

using gfortran compiler.

1
  • 2
    gfortran's manual contains instructions on how to use the preprocessor. Is there anything about them that's not clear to you? Commented Dec 26, 2011 at 17:27

1 Answer 1

9

This can be done in combination with conditional compilation and using the "D" option on the command line. Here is some example code:

program test_Dopt
character (len=1) :: pathsep
pathsep = "?"
#ifdef WOS
   pathsep = "\"
#endif
#ifdef UOS
   pathsep = "/"
#endif

write (*, '( "pathsep is >", A1, "<")' )  pathsep

end program test_Dopt

Name the program with filetype F90 to cause gfortran to run the preprocessor or use -cpp on the compile line. Then pass options to the prepreprocessor by including them after D on the compile line, e.g., gfortran -DWOS. (This is more general then gfortran -- most Fortran compilers will process C-style pre-processor directives.) Then you can identify the OS outside of Fortran and pass the information to the Fortran program.

You can compile your code via using the filetype F90 or -cpp.

Sign up to request clarification or add additional context in comments.

1 Comment

__unix__ and _WIN32 are the usual predefined preprocessor flags used to indicate which system you are on in most compilers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.