2012-06-04 29 views
8

Tôi hiểu gfortran có thể biên dịch f90 hoặc f95? Làm thế nào để biết nó đang biên dịch cái nào? Ngoài ra nó có thể biên dịch mã f77? Ubuntu đã có trình biên dịch fortran hay tôi cần tải xuống gfortran?Làm cách nào để biết tôi có đang biên dịch mã F90 hay F95 không?

+0

Ngoài ra, hãy xem [Làm cách nào để biết tôi đang biên dịch mã F90 hoặc F95?] (Https://stackoverflow.com/q/10884260/608639), [Tạo tệp với các loại nguồn khác nhau] (https: // stackoverflow. com/q/8940552/608639), [cmake, fortran 2008 và .f08 mở rộng tệp] (https://stackoverflow.com/q/25005017/608639), [Hậu tố chính xác cho tệp nguồn Fortran 2003 - trình biên dịch Intel Fortran] (https://stackoverflow.com/q/20269076/608639), v.v. – jww

Trả lời

18

gfortran có thể đoán một số thứ nhất định từ phần mở rộng tệp; nếu tệp có phần mở rộng là .f, .f90, f95, .f03 hoặc .f08, tệp này sẽ giả định định dạng cố định (.f) hoặc miễn phí với các tiêu chuẩn thích hợp. Nhưng bạn có thể buộc nó biên dịch (nói) mã fortran2003 với tùy chọn -std = f2003. Ví dụ, từ documentation,

-std = std

Xác định các tiêu chuẩn mà các chương trình dự kiến ​​sẽ phù hợp, có thể là một trong những 'f95' , `f2003' ,` F2008' , `gnu 'hoặc' cũ '. Giá trị mặc định của 01dcho std là `gnu ', chỉ định một phần siêu của tiêu chuẩn Fortran 95 bao gồm tất cả các phần mở rộng được hỗ trợ bởi GNU Fortran, mặc dù cảnh báo sẽ được cung cấp cho các tiện ích lỗi thời không được khuyến nghị sử dụng trong mã mới. Giá trị 'cũ' tương đương với nhưng không có cảnh báo cho các tiện ích lỗi thời và có thể hữu ích đối với các chương trình không chuẩn cũ. Các giá trị `f95 ',` f2003' và `f2008 ' chỉ định sự phù hợp nghiêm ngặt với các tiêu chuẩn Fortran 95, Fortran 2003 và Fortran 2008, tương ứng; lỗi được cung cấp cho tất cả các tiện ích mở rộng vượt quá tiêu chuẩn ngôn ngữ có liên quan và cảnh báo được cung cấp cho các tính năng của Fortran 77 được phép nhưng bị lỗi sau trong các tiêu chuẩn sau . '-std = f2008ts' cho phép theo tiêu chuẩn Fortran năm 2008 bao gồm những bổ sung của Thông số kỹ thuật (TS) 29.113 trên Hơn nữa Khả năng cộng tác của Fortran với C.

Lưu ý rằng, với một vài ngoại lệ, các tiêu chuẩn fortran là có khả năng tương thích ngược, do đó, nhiều "đẹp", việc tuân thủ tiêu chuẩn, mã fortran-77 cũng là mã fortran 2003 hợp lệ. Vấn đề chính với điều đó là nhiều mã fortran từ những năm 80 và trước đó không phải là "tốt đẹp" cũng như không phù hợp tiêu chuẩn.

+1

Có thể được thuyết phục rằng tệp .f là Fortran 95 hoặc cao hơn không? '-std = f95' không đủ. – hertzsprung

+1

@hertzsprung 'gcc -x f95 file.f' có thể hoạt động –

10

Có, gfortran có thể biên dịch FORTRAN 77 và Fortran 90,95 vv. Có nhiều tính năng của 2003 & 2008 được triển khai. Đối với mã Fortran 90/95/2003/2008, một phần mở rộng tốt để sử dụng là .f90. Một số trình biên dịch khác không nhận ra .f95, .f2003, v.v. Và bạn có thực sự muốn đổi tên các tệp của mình khi một tiêu chuẩn mới xuất hiện không? Sử dụng .f hoặc .for cho FORTRAN 77. Sự khác biệt chính là bố trí nguồn mà trình biên dịch sẽ mong đợi: biểu mẫu miễn phí cho .f90, biểu mẫu cố định cho .f hoặc .for. (Các kiểu tập tin kiểu chữ thường sẽ làm cho bộ tiền xử lý được chạy.) Bạn có thể bắt buộc bố trí biểu mẫu cố định với các tùy chọn-được trộn-form -ffixed-line-length-none.

Các vấn đề liên quan