avr-libc-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-libc-dev] selective linking of floating point support for *prin


From: Eric Blake
Subject: Re: [avr-libc-dev] selective linking of floating point support for *printf / *scanf
Date: Fri, 29 Aug 2014 10:12:55 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0

On 08/29/2014 10:03 AM, Eric Blake wrote:
> On 08/29/2014 09:51 AM, Grissiom wrote:
>>> 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.
>>>
>>>
>> You mean _[_a-z] (lower case) is the namespace reserved for implementation,
>> right?
> 
> No, I spoke correctly.  The namespace reserved for the implementation is
> all double underscores, and all single underscore followed by a capital.
>  Single underscore followed by a lower case is NOT reserved for the
> implementation, and is therefore free for use by the user, and therefore
> the implementation must not interfere with the user's use of that namespace.

Quoting POSIX:

http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm

> The following identifiers are reserved regardless of the inclusion of headers:
> 
> 1.
>     With the exception of identifiers beginning with the prefix _POSIX_, all 
> identifiers that begin with an <underscore> and either an uppercase letter or 
> another <underscore> are always reserved for any use by the implementation.
> 2.
>     All identifiers that begin with an <underscore> are always reserved for 
> use as identifiers with file scope in both the ordinary identifier and tag 
> name spaces.
>...

Of course, that list feels a bit too restrictive in light of existing
standardized uses of underscore followed by capital. such as _Bool and
_Exit in C99; and C11 has introduced even more things like _Noreturn.
But the REASON that C has been able to extend the language and add more
keywords beginning with underscore-capital is precisely because those
names were reserved for the implementation, not the user, so it can't
break any user code.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]