Определяемые пользователем ошибки с препроцессором nagfor

Я пытаюсь прервать компиляцию, если используется неподдерживаемый компилятор 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 foo.F90
NAG Fortran Compiler Release 5.3.1(907)
"foo.F90", line 8: error: unknown fpp directive.

Я не могу найти упоминания о том, как создать ошибку в документации nagfor fpp, так что, возможно, #error не существует В каком случае, есть ли альтернативный подход, чтобы получить тот же эффект?

1 ответ

Решение

Я работаю над компилятором NAG. fpp должен быть довольно легким в плане работы (и функциональности). Это происходит от Солнца; мы используем версию, основанную на netlib, с http://netlib.org/fortran/fdfpp.tgz.

Руководство fpp ( http://www.nag.co.uk/nagware/np/r60_doc/fpp.html) не документирует #error как поддержка, которую вы обнаружили.

Как предполагает Франческа, лучший способ достичь желаемого - это что-то вроде

program foo

  implicit none

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

end program foo
Другие вопросы по тегам