2013-11-02 5 views
8

Я - кровавый новичок в Fortran.Fortran: разница между f и F-расширением

Интересно: в чем разница между .f и .F расширений Фортрана файлов. Я знаю, что много: f является бесплатным, а F - фиксированным.

Что означает свободный и фиксированный факт, и почему они могут полностью испортить процесс компиляции? (Я использую gfortran и ifort).

Я googled fortran разница между f и F расширение. Я был недоволен результатом, поэтому я перехожу к stackoverflow.

Если бы вы могли предложить хорошую ссылку для ознакомления с этим, я был бы очень рад сделать это.

ответ

9

Насколько я знаю, .f и .F оба расширения, связанные с фиксированным форматом FORTRAN 77. Фиксированный формат ограничен 72 столбцами, где первые шесть столбцов служат для особых целей. Например. a & в позиции 6 указывает продолжение линии из предыдущей строки.

Свободная форма была введена с Fortran 90 и обычно обозначается .f90 и .F90. Для бесплатной формы вы можете использовать до 132 столбцов, и никаких специальных столбцов не существует. Продолжение линии обозначается амперсандом в конце строки.

Заглавные буквы в расширении файла обычно включают предварительный процессор.

Обратите внимание, что это соглашения, которые могут быть переопределены параметрами компиляции для большинства компиляторов.

6

Это зависит от компилятора и, возможно, не следует полагаться. Обычно суффиксы капитала указывают, что следует использовать предварительную обработку. Различие между свободным и фиксированным форматом обычно производится .f90 (бесплатно) против .f (исправлено).

Поскольку это зависит от компилятора, хорошей документацией будет ваш компилятор. Если вы используете gfortran, вы можете посмотреть его options и раздел на preprocessing.

+1

К сожалению, я не могу отметить оба ответа, как * Принимается ответы *. Вы также очень полезны. благодаря! – seb

0

В gfortran, в свободной форме (нет особого смысла для перевалы 7, 72) устанавливается с помощью переключателя компилятора -ffree-формы и не имеет ничего общего с .f или .F суффиксов файлов. Разница между .f и .F заключается в том, что последний проходит через предварительный процессор, наиболее частое использование которого позволяет использовать операторы C-like #define. Например:

#define MAXN 100 
program example 
integer N(MAXN) 
end 

будет собирать, если это .F но если это .f

+0

gfortran, безусловно, признает, что «.f означает фиксированное, .f90 означает бесплатное» соглашение, отмеченное другими ответами. – agentp

Смежные вопросы