2013-11-02 12 views
8

Sono un maledetto principiante in Fortran.Fortran: differenza tra estensione F e F

mi chiedo: qual è la differenza tra le .F e .F estensioni di file Fortran. Lo so molto: f è gratuito e F è fisso.

Che cosa significa in realtà libero e fisso e perché possono rovinare completamente il processo di compilazione? (Sto usando gfortran e ifort).

Ho cercato su google fortran differenza tra f e l'estensione F. Non ero contento del risultato, ed è per questo che mi rivolgo a StackOverflow.

Se potessi suggerire un buon riferimento per leggere su questo, sarei molto felice di farlo.

risposta

9

Per quanto ne so, .f e .F sono entrambe estensioni associate al formato fisso FORTRAN 77. Il formato fisso è limitato a 72 colonne, dove le prime sei colonne hanno scopi speciali. Per esempio. a & in posizione 6 indica una continuazione di linea dalla riga precedente.

Free-form è stato introdotto con Fortran 90 ed è in genere indicato da .f90 e .F90. Per la forma libera è possibile utilizzare fino a 132 colonne e non esistono colonne speciali. La continuazione della linea è indicata da una e commerciale alla fine della linea.

Le lettere maiuscole nell'estensione di file in genere attivano il pre-processore.

Si noti che queste sono convenzioni che possono essere sovrascritte con opzioni di compilazione per la maggior parte dei compilatori.

6

Questo dipende dal compilatore e non dovrebbe essere invocato. Solitamente i suffissi di capitale indicano che è necessario utilizzare il pre-processing. La distinzione tra il formato libero e il formato fisso viene solitamente effettuata da .f90 (gratuito) rispetto a .f (riparato).

Dato che dipende dal compilatore, una buona documentazione dovrebbe essere quella del compilatore. Se ti capita di utilizzare gfortran, potresti dare un'occhiata al suo options e alla sezione preprocessing.

+1

Purtroppo, non riesco a segnare entrambe le risposte come * risposte accettati *. La tua risposta è anche molto utile. Grazie! – seb

0

In gfortran, a forma libera (nessun significato speciale per Cols 7, 72) è impostata dal -ffree forma opzione del compilatore e non ha nulla a che fare con .F o .F suffissi dei file. La differenza tra .f e .F è che quest'ultimo passa attraverso un pre-processore, il cui uso più comune è quello di consentire le istruzioni #define di tipo C. Per esempio:

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

compilerà se è .F, ma non se è .F

+0

gfortran riconosce certamente ".f significa fisso, .f90 significa convenzione libera" annotata da altre risposte. – agentp