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

时间:2019-06-10 22:33:33

标签: fortran preprocessor cray

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

#ifdef DEBUG
!  print extra info
#endif

Cray根本不喜欢这样。它告诉我

#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编译器满意吗? (此代码BTW使用intel和gcc可以正常编译。)

1 个答案:

答案 0 :(得分:1)

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

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