Spec-Zone.ru › GNU Fortran 5

7.1.2 Производные типы и struct

Для совместимости производных типов с struct, необходимо использовать атрибут BIND(C) в объявлении типа. Например, следующее объявление типа

USE ISO_C_BINDING
TYPE, BIND(C) :: myType
  INTEGER(C_INT) :: i1, i2
  INTEGER(C_SIGNED_CHAR) :: i3
  REAL(C_DOUBLE) :: d1
  COMPLEX(C_FLOAT_COMPLEX) :: c1
  CHARACTER(KIND=C_CHAR) :: str(5)
END TYPE

соответствует следующему struct объявлению на языке C

struct {
  int i1, i2;
  /* Note: "char" might be signed or unsigned.  */
  signed char i3;
  double d1;
  float _Complex c1;
  char str[5];
} myType;

Производные типы с атрибутом привязки к C не должны содержать атрибута sequence, параметров типа, атрибута extends, а также процедур, связанных с типом. Каждый компонент должен иметь совместимый тип и вид и не может иметь атрибуты pointer или allocatable. Названия компонентов не имеют значения для межплатформенной совместимости.

Так как прямых эквивалентов в Fortran нет, ни объединения, ни структуры с членами, имеющими битовое поле или массив переменной длины, не являются совместимыми.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gfortran/Derived-Types-and-struct.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API