Правильный способ введения директив предварительной обработки в код Fortran для компилятора Cray - PullRequest
0 голосов
/ 11 июня 2019

Пытаюсь скомпилировать код на Фортране с помощью компилятора Cray. У меня есть стандартный блок предварительной обработки ifdef в коде:

#ifdef DEBUG
!  print extra info
#endif

Крэй это совсем не нравится. Это говорит мне

#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? (Этот код, кстати, прекрасно компилируется с intel и gcc.)

1 Ответ

1 голос
/ 11 июня 2019

Эти макросы не являются частью стандартного Фортрана.Компилятору нужно как-то сказать выполнить препроцессор (cpp или fpp или что-то нестандартное, они делают отличаются).

Для Cray вы должны использовать -e Z или использоватьзаглавная F в расширении файла.Всегда консультируйтесь с руководством для любого нового компилятора.Однако man-страница для crayftn очень неполная, в ней упоминается опция, но только косвенно.Необходимо перейти к полной документации, например, по ссылке , предоставленной RussF.

...