6.1.6 Further Interoperability of Fortran with C

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/.