IF和ENDIF之前的#是什么意思

时间:2016-09-16 16:42:28

标签: fortran

我知道如何在Fortran中使用IFENDIF,但在其他人的许多代码中,#之前有一个IF符号,那意思是?

!USES:
#if ( defined X )
     use Y
#endif

2 个答案:

答案 0 :(得分:5)

这些是预编译器宏,而不是Fortran语句。它们与常规if语句的作用相同,仅在编译时和稍微different syntax

请注意,预处理器指令不是任何Fortran标准的一部分,并且每个编译器都不支持它们。通常,它们与C预处理器指令相同,但并非总是如此。

答案 1 :(得分:4)

#ifdef和#endif是预处理程序指令。

假设您有一个文件:

! test.F:
     program A
     x=1
#ifdef NEW
     x=0
#endif
     write(*,*) x
     end

如果使用预处理器编译它:

    ifort -DNEW test.F -o a.out

你应该得到x = 0

否则,如果你在没有-DNEW的情况下编译

    ifort test.F -o a.out

在这种情况下,你得到x = 1。 ifdef中的代码未编译。 Here are compile time options for gfortran.example is this question的有用情况。