2011-12-26 190 views
4

你能告诉我,我请了如何可以做到以下几点:Gfortran预处理器指令

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

使用gfortran编译器。

+2

gfortran的手册包含有关如何使用预处理器的说明。他们有什么不清楚的吗? – eriktous 2011-12-26 17:27:30

回答

9

这可以结合条件编译并在命令行中使用“D”选项来完成。下面是一些示例代码:

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 

名称与文件类型F90的程序,以使gfortran运行预处理器或编译行使用-cpp。然后通过将选项包含在D之后的编译行中,将选项传递给预处理器,例如gfortran -DWOS。 (这一点比gfortran更普遍 - 大多数Fortran编译器会处理C风格的预处理器指令。)然后,您可以在Fortran之外识别操作系统并将信息传递给Fortran程序。

您可以通过使用filetype F90或-cpp编译您的代码。

+0

'__unix__'和'_WIN32'是通常预定义的预处理器标志,用于指示您在大多数编译器中使用的系统。 – Chris 2012-01-08 17:15:59