将预处理指令引入 Cray 编译器的 Fortran 代码的正确方法



我试图用Cray编译器编译Fortran代码。 我在代码中有一个标准的预处理 ifdef 块:

#ifdef DEBUG
!  print extra info
#endif

克雷一点也不喜欢这样。 它告诉我

#ifdef DEBUG
^            
ftn-100 crayftn: ERROR BALANCE_DATA, File = balance_data.f90, Line = 9, Column = 1 
  This statement must begin with a label, a keyword, or an identifier.
#endif
^      
ftn-100 crayftn: ERROR BALANCE_DATA, File = balance_data.f90, Line = 11, Column = 1 
  This statement must begin with a label, a keyword, or an identifier.

有谁知道我怎样才能让 Cray 编译器开心? (顺便说一下,这段代码在英特尔和 gcc 上编译得很好。

这些宏不是标准 Fortran 的一部分。必须以某种方式告诉编译器执行预处理器(cppfpp或自定义的东西,它们确实不同(。

对于 Cray,您应该在文件扩展名中使用-e Z或使用大写的 F。对于任何新的编译器,请始终查阅手册。但是,crayftn 的手册页非常不完整,它确实提到了该选项,但只是间接的。必须进入完整的文档,例如在RussF提供的链接中。

最新更新