我知道如何在Fortran中使用IF
和ENDIF
,但在其他人的许多代码中,#
之前有一个IF
符号,那意思是?
!USES:
#if ( defined X )
use Y
#endif
答案 0 :(得分:5)
这些是预编译器宏,而不是Fortran语句。它们与常规if
语句的作用相同,仅在编译时和稍微different syntax。
请注意,预处理器指令不是任何Fortran标准的一部分,并且每个编译器都不支持它们。通常,它们与C预处理器指令相同,但并非总是如此。
答案 1 :(得分:4)
假设您有一个文件:
! 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的有用情况。