3

如果使用了不受支持的 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 文档中找不到有关如何创建错误的任何提及,因此可能#error不存在。在这种情况下,是否有替代方法来获得相同的效果?

4

1 回答 1

1

我在 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
于 2015-04-13T17:09:15.173 回答