GNU Fortran에서 구현된 확장

GNU Fortran에서 구현된 확장

GNU Fortran은 표준 Fortran 위에 여러 확장 기능을 구현하고 있어요. 이 장에서는 그 확장들의 문법과 의미를 설명해요. 이 확장들은 크게 두 종류로 나뉘는데, 어떤 표준이 제공하는 기능보다 더 많은 기능을 제공하는 것과, 옛 컴파일러와의 호환성을 위해 순수하게 유지하는 것이에요.

출처: Extensions implemented in GNU Fortran (The GNU Fortran Compiler)

본문

GNU Fortran은 표준 Fortran 위에 여러 확장 기능을 구현해요. 이 장에는 그 확장들의 문법과 의미에 대한 정보가 담겨 있어요. 현재 GNU Fortran 확장에는 두 가지 범주가 있어요. 하나는 어떤 표준도 제공하지 못하는 기능을 더해주는 것이고, 다른 하나는 옛 컴파일러(legacy compiler)와의 하위 호환성을 위해 GNU Fortran이 순수하게 지원하는 것이에요.

기본적으로 -std=gnu는 두 종류의 확장을 모두 허용하지만, 후자의 사용에 대해서는 경고해요. -std=f95, -std=f2003, -std=f2008, -std=f2018 중 어떤 걸 지정해도 두 종류의 확장이 모두 꺼지고, -std=legacy는 경고 없이 둘 다 허용해요. 특별한 컴파일 플래그인 -fdec-std=legacy가 켜는 확장과 함께 추가적인 호환 확장을 켜요.

구현된 확장은 다음과 같아요:

  • 올드 스타일 kind 지정 (Old-style kind specifications)
  • 올드 스타일 변수 초기화 (Old-style variable initialization)
  • namelist 확장 (Extensions to namelist)
  • 개수 필드가 없는 X 포맷 지시자 (X format descriptor without count field)
  • FORMAT 지정에서의 쉼표 (Commas in FORMAT specifications)
  • FORMAT 지정에서 빠진 마침표 (Missing period in FORMAT specifications)
  • 'F', 'G', 'I' 포맷 지시자의 기본 너비 (Default widths for 'F', 'G' and 'I' format descriptors)
  • I/O 항목 목록 (I/O item lists)
  • 'Q' 지수 문자 (Q exponent-letter)
  • BOZ 리터럴 상수 (BOZ literal constants)
  • 실수 배열 인덱스 (Real array indices)
  • 단항 연산자 (Unary operators)
  • LOGICALINTEGER 값의 암시적 변환 (Implicitly convert LOGICAL and INTEGER values)
  • Hollerith 상수 지원 (Hollerith constants support)
  • 문자 변환 (Character conversion)
  • Cray 포인터 (Cray pointers)
  • CONVERT 지정자 (CONVERT specifier)
  • OpenMP
  • OpenACC
  • 인자 목록 함수 %VAL, %REF, %LOC (Argument list functions)
  • EOF 마커 이후 읽기/쓰기 (Read/Write after EOF marker)
  • STRUCTURERECORD
  • UNIONMAP
  • 정수 내장 함수의 타입 변형 (Type variants for integer intrinsics)
  • AUTOMATICSTATIC 속성
  • 공백으로서의 폼 피드 (Form feed as whitespace)
  • PRINT의 별칭인 TYPE (TYPE as an alias for PRINT)
  • rvalue로서의 %LOC
  • .XOR. 연산자
  • 비트 논리 연산자 (Bitwise logical operators)
  • 확장된 I/O 지정자 (Extended I/O specifiers)
  • PARAMETER 문 (Legacy PARAMETER statements)
  • 기본 지수 (Default exponents)
  • 부호 없는 정수 (Unsigned integers)

더 알아보기