GNU Fortran implements the Technical Specification ISO/IEC TS
29113:2012, which extends the interoperability support of Fortran 2003
and Fortran 2008 and is now part of the 2018 Fortran standard.
Besides removing some restrictions and constraints, the Technical
Specification adds assumed-type (TYPE(*)
) and assumed-rank
(DIMENSION(..)
) variables and allows for interoperability of
assumed-shape, assumed-rank, and deferred-shape arrays, as well as
allocatables and pointers. Objects of these types are passed to
BIND(C)
functions as descriptors with a standard interface,
declared in the header file <ISO_Fortran_binding.h>
.
Note: Currently, GNU Fortran does not use internally the array descriptor
(dope vector) as specified in the Technical Specification, but uses
an array descriptor with different fields in functions without the
BIND(C)
attribute. Arguments to functions marked BIND(C)
are converted to the specified form. If you need to access GNU Fortran’s
internal array descriptor, you can use the Chasm Language Interoperability
Tools, http://chasm-interop.sourceforge.net/.