2012-06-04 9 views
8

Entiendo que gfortran puede compilar f90 o f95? ¿Cómo sabe cuál está compilando? ¿También puede compilar el código f77? ¿Ubuntu ya tiene un compilador fortran o necesito descargar gfortran?¿Cómo puede saber Gfortran si estoy compilando el código f90 o f95?

+0

También vea [¿Cómo puede saber gfortran si estoy compilando código f90 o f95?] (Https://stackoverflow.com/q/10884260/608639), [Makefile con diferentes tipos de fuente] (https: // stackoverflow. com/q/8940552/608639), [cmake, fortran 2008 y extensión de archivo .f08] (https://stackoverflow.com/q/25005017/608639), [Sufijo correcto para el archivo fuente Fortran 2003 - compilador Intel Fortran] (https://stackoverflow.com/q/20269076/608639), etc. – jww

Respuesta

18

gfortran puede adivinar ciertas cosas desde la extensión del archivo; si el archivo tiene una extensión de .f, .f90, f95, .f03 o .f08 asumirá un formato fijo (.f) o libre con los estándares apropiados. Pero puede obligarlo a compilar (decir) código fortran2003 con la opción -std = f2003. Por ejemplo, de la documentation,

-std = std

Especificar la norma a la que se espera que el programa de ajustarse, que puede ser uno de `f95' ,` F2003' , `F2008' , `gnu ', o` legado'. El valor predeterminado para std es `gnu ', que especifica un superconjunto del estándar Fortran 95 que incluye todas las extensiones admitidas por GNU Fortran, aunque se darán advertencias para las extensiones obsoletas no recomendadas para su uso en el nuevo código. El valor 'heredado' es equivalente a pero sin las advertencias de extensiones obsoletas, y puede ser útil para programas antiguos no estándar. Los valores `f95 ',` f2003' y `f2008 ' especifican una estricta conformidad con los estándares Fortran 95, Fortran 2003 y Fortran 2008, respectivamente; se dan errores para todas las extensiones más allá del estándar de idioma relevante, y se dan advertencias para las características Fortran 77 que están permitidas pero obsoletas en las posteriores normas . `-std = f2008ts' permite el estándar Fortran 2008 incluyendo las adiciones de la Especificación Técnica (TS) 29.113 sobre el ulterior Interoperabilidad de Fortran con C.

Tenga en cuenta que, con unas pocas excepciones, las normas FORTRAN son muy comparables hacia atrás, de modo que mucho código "agradable", estándar, fortran-77 también es válido para el código 2003. El problema principal con eso es que gran parte del código de los años 80 y anteriores no es "agradable" ni cumple con las normas.

+1

¿Se puede persuadir a gfortran de que un archivo .f es Fortran 95 o superior? '-std = f95' no es suficiente. – hertzsprung

+1

@hertzsprung 'gcc -x f95 file.f' puede funcionar –

10

Sí, gfortran puede compilar FORTRAN 77 y Fortran 90,95 etc. Tiene muchas características de 2003 & 2008 implementado. Para el código Fortran 90/95/2003/2008 una buena extensión para usar es .f90. Algunos otros compiladores no reconocen .f95, .f2003, etc. ¿Y realmente quiere cambiar el nombre de sus archivos cuando aparece un nuevo estándar? Utilice .f o .for para FORTRAN 77. La principal diferencia es el diseño de fuente que esperará el compilador: forma libre para .f90, forma fija para .f o .for. (Los tipos de archivo en mayúsculas provocarán que se ejecute el preprocesador). Puede forzar el diseño de forma fija con las opciones -fixed-form -ffixed-line-length-none.

Cuestiones relacionadas