[MPI3 Fortran] Fwd: [Mpi-comments] MPI 3.0: Fortran 2008 interface - issue with the LOGICAL kind

N.M. Maclaren nmm1 at cam.ac.uk
Thu Feb 28 13:14:36 CST 2013


On Feb 28 2013, Craig Rasmussen wrote:
>
> I just did a quick rereading of clause 15, Interoperability with C, and 
> it appears ill defined to me. Consider the following:

Yes.  I hope to get these improved in the next standard.  I have already
made proposals to the UK, for consideration.

> 1. Suppose a compiler has a default logical size equivalent to a default 
> integer. Since the standard only requires one logical kind, this compiler 
> may not have a type that is interoperable with a _Bool C type. In this 
> instance C_BOOL would be a negative value.

That is correct.  That would also be the case if it were a C90 compiler
not a C99 one.

> 2. If a compiler does support LOGICAL(kind=C_BOOL), what values of a
> C type _Bool map to .TRUE.? What values map to .FALSE.? These mappings
> may be in clause 15 but I didn't see them at first glance.

No, but an interpretation would almost certainly say that any compiler
that didn't treat zero as .FALSE. and non-zero as .TRUE. is non-conforming.
Malcolm or Bill might correct me, but I doubt it :-)

The real question is what (integer) value does .TRUE._C_BOOL have?


Regards,
Nick Maclaren.






More information about the mpiwg-fortran mailing list