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
signature.asc
Description: OpenPGP digital signature