[PATCH,fortran] fix iso_c_binding only clause bug

Brooks Moses brooks.moses@codesourcery.com
Thu Jul 5 20:57:00 GMT 2007


Christopher D. Rickett wrote:
> hi Tobias,
>> This is something which should be rejected for -std=f2003; it should be
>> easy using "gfc_notify_std (GFC_STD_F2003, ..." I think one can allow it
>> by default, but I don't mind always rejecting it.Note: using "call foo("abcdef"//C_CHAR_NULL)" works with
>> "character(len=0),dimension(*)" per F2003 standard, which is implemented
>> in gfortran. Thus prohibiting it completely would also be ok.
> 
> i agree that this should be an error w/ -std=f2003, but having it error 
> for std=gnu or by default seems harsh to me.  i know of at least one 
> other compiler that allows it.  if acceptable, i'll add the std=f2003
> check for the error.

IMO, it should at least provide a warning by default.  I believe this is 
a case where we're not really adding any useful functionality, and thus 
mostly this proposed extension just gives users more rope with which to 
hang themselves when they try to port things.

I think it might also be useful to ask why this is done this way in the 
standard, before we allow it with -std=gnu.  (I recall that there were 
discussions on comp.lang.fortran about it a few months back.)

In particular, if we do allow other character lengths in bind(c) 
procedures, what happens if we then try to call them from a C program? 
Do they actually work correctly?  What if we have a length other than 
one and a character _array_ -- what happens then?  What if it's an 
assumed-shape array?  What if it's an assumed-shape array of assumed length?

- Brooks



More information about the Fortran mailing list