Как скомпилировать этот старый код FORTRAN 77 с файлами * .h? - PullRequest
3 голосов
/ 03 мая 2011

У меня есть коллекция файлов .F и .H, которые составляют код FORTRAN.У меня проблемы с компиляцией файлов .H.Файлы .H содержат несколько общих блоков.Пример одного из файлов .H:

*AC HEAD      
c                                                                       HEAD 1
      common/blah/ x(25), y, z(25), p(25,mnv),                          HEAD 2
     1                t(25,mx), d(25,mnv)                               HEAD 3
c                                                                       HEAD 4
ETC...

Когда я ищу ответ в Google, говорят, что файлы .h - это файлы c / c ++, но они не выглядят так, как будто онинаписаны на с / с ++.Кажется, gfortran также считает, что это файлы C.

Когда я пытаюсь скомпилировать:

gfortran-4.5 -fdefault-real-8 -fbacktrace -fno-align-commons HEAD.h

Я получаю сообщения об ошибках:

cc1: warning: command line option "-fdefault-real-8" is valid for Fortran but not for C
cc1: warning: command line option "-fbacktrace" is valid for Fortran but not for C
cc1: warning: command line option "-fno-align-commons" is valid for Fortran but not for C
HEAD.h:1:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘HEAD’

Я пытался закомментировать первую строку '* AC HEAD', но затем ошибка заключалась в поиске атрибута перед *.Нужно ли что-то в последнем столбце со значениями HEAD #, чтобы это закомментировать, нужно ли создавать файлы .H с помощью компилятора C ++ или как?

1 Ответ

7 голосов
/ 03 мая 2011

Вы их не компилируете. Если вы выполните grep других файлов Fortran, вы увидите, что они включены, используя что-то вроде include HEAD.h или «#include« head.h »» (я полагаю, что эта секунда; С препроцессором на фортранских файлах). Эти операторы include в основном читаются в копии этого файла .h, где бы ни находился оператор include в процессе компиляции. Так что это кусок кода, который используется, но никогда не компилируется сам по себе.

Такое включение заголовочных файлов в Fortran не является лучшей практикой, тем более, что они используются для широкого распространения общих блоков через код. Поэтому не пишите новый код, используя этот подход. Но именно этим и занимается этот старый код.

...