Определяемые пользователем ошибки с препроцессором 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