On Sat, Aug 30, 2014 at 12:26 PM, Thomas Preud'homme <thomas.preudho...@arm.com> wrote: >> From: Grissiom [mailto:chaos.pro...@gmail.com] >> Sent: Friday, August 29, 2014 11:51 PM >> >> Yes, it does. The namespace reserved for the implementation is _[_A-Z]. > > The namespace _[a-z] is still available for the user. Which means the >> user can declare their own _printf_float, and WE (as the implementation) >> MUST NOT INTERFERE with it. Since WE are the implementation, we should >> use the namespace reserved for us, namely __printf_float. > > Mmmh indeed. I checked C99 and section 7.1.3 paragraph 1 third clause states: > > "All identifiers that begin with an underscore and either an uppercase letter > or > another underscore are always reserved for any use." > > Next clause express how single underscore not followed by a capital letter is > reserved: > > "All identifiers that begin with an underscore are always reserved for use as > identifiers > with file scope in both the ordinary and tag name spaces." Apparently newlib is not following this specification very well, as there are symbols like _abc_r defined every where in current newlib. I am not implying the spec should not be followed, but is newlib designed to have a loose spec for the single underscore?
- Joey > > Since here we are talking about linkage, _printf_float is not safe according > to the > standard. > > Sigh. > > Ok I need to think about it. Thank you all for pointing out the problem with > the > current scheme. > > Best regards, > > Thomas > > _______________________________________________ AVR-libc-dev mailing list AVR-libc-dev@nongnu.org https://lists.nongnu.org/mailman/listinfo/avr-libc-dev