6.1.1 Intrinsic Types

In order to ensure that exactly the same variable type and kind is used in C and Fortran, you should use the named constants for kind parameters that are defined in the ISO_C_BINDING intrinsic module. That module contains named constants of character type representing the escaped special characters in C, such as newline. For a list of the constants, see ISO_C_BINDING.

For logical types, please note that the Fortran standard only guarantees interoperability between C99’s _Bool and Fortran’s C_Bool-kind logicals and C99 defines that true has the value 1 and false the value 0. Using any other integer value with GNU Fortran’s LOGICAL (with any kind parameter) gives an undefined result. (Passing other integer values than 0 and 1 to GCC’s _Bool is also undefined, unless the integer is explicitly or implicitly casted to _Bool.)