如果使用不受支持的fortran编译器,我试图中止编译。 nagfor预处理器定义了宏NAGFOR,因此我编写了以下测试程序:

program foo

  implicit none

#ifdef NAGFOR
  PRINT *, "Hello from nagfor"
#else
#error "Compiler not supported"
#endif

end program foo

当我使用gfortran或ifort进行编译时,我得到了预期的错误消息
$ gfortran foo.F90
foo.F90:8:2: error: #error "Compiler not supported"

$ ifort foo.F90
foo.F90(8): #error:  "Compiler not supported"

但是nagfor给出了另一个错误
$ nagfor foo.F90
NAG Fortran Compiler Release 5.3.1(907)
"foo.F90", line 8: error: unknown fpp directive.

我找不到关于如何在nagfor fpp documentation中创建错误的任何提及,因此#error可能不存在。在这种情况下,是否有替代方法可获得相同的效果?

最佳答案

我在NAG编译器上工作。 fpp旨在在操作(和功能)方面非常轻巧。它起源于太阳;我们使用的是基于http://netlib.org/fortran/fdfpp.tgz的netlib的版本。

fpp手册(http://www.nag.co.uk/nagware/np/r60_doc/fpp.html)并未记录您发现的#error受支持。

正如francescalus所建议的那样,达到您想要的最佳方法是使用类似以下内容的东西:

program foo

  implicit none

#ifdef NAGFOR
  PRINT *, "Hello from nagfor"
#else
  error "Compiler not supported"
#endif

end program foo

关于compilation - nagfor预处理程序的用户定义错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29609305/

10-11 21:30