Fortran: разница между расширением f и F
Я чертов новичок в Fortran.
интересно: в чем разница между .f и .F расширения файлов Fortran. Я знаю это: f-бесплатно, а F-фиксировано.
что на самом деле означает free и fixed и почему они могут полностью испортить процесс компиляции? (Я использую gfortran и ifort).
я погуглила fortran разница между f и F расширение. Я не был доволен результатом, поэтому я обращаюсь к stackoverflow.
Если вы можете предложить хорошую ссылку почитать об этом, я был бы очень рад.
4 ответов
насколько я знаю, .f
и .F
оба расширения связаны с фиксированным форматом FORTRAN 77. Фиксированный формат ограничен 72 столбцами, где первые шесть столбцов служат специальным целям. Е. Г. а &
в позиции 6 указывает на продолжение строки из предыдущей строки.
свободная форма была введена с Fortran 90 и обычно указывается .f90
и .F90
. Для свободной формы вы можете использовать до 132 столбцов, и никаких специальных столбцов не существует. Продолжение строки обозначается амперсандом в конце строки.
заглавные буквы в расширении файла обычно включают предварительный процессор.
обратите внимание, что эти соглашения могут быть переопределены параметрами компиляции для большинства компиляторов.
Это зависит от компилятора и может не полагаться. Обычно капитальные суффиксы указывают, что следует использовать предварительную обработку. Различие между свободным и фиксированным форматом обычно проводится .ф90 (бесплатно) и .f (исправлено).
поскольку это зависит от компилятора, хорошей документацией будет один из вашего компилятора. Если вы используете gfortran, вы можете взглянуть на его опции и раздел предварительная обработка.
в gfortran свободная форма (без специального значения для cols 7, 72) устанавливается компилятором switch-ffree-form и не имеет ничего общего с .f или .F файл суффиксы. Разница между ними .f и .F заключается в том, что последний проходит через предварительный процессор, наиболее распространенное использование которого позволяет c-like #define операторы. Например:
#define MAXN 100
program example
integer N(MAXN)
end
будет компилироваться, если это .F но не если это .f