On 14 Apr 2015, at 15:04, Riccardo Mottola <[email protected]> wrote: > > Hi, > > David Chisnall wrote: >> It appears that all NetBSD headers are incompatible with Objective-C. >> Probably worth filing a bug with them - this is even harder to work around >> than the glibc issue of using __block as a variable name. > > I reported to NetBSD and they said it is a bug in obj-c or gnustep, because > we don't have to mess around with symbols with __ as prefix because they are > system reserved. > The most polite reply I got is > "Don't blame NetBSD though, because these are system headers..." > > Now it was easy before: until latest release 6.1.5 NetBSD did not define > __weak but > #define __weak_reference(sym) __attribute__((__weakref__(#sym)))
__weak is a keyword in Objective-C (and was before the last NetBSD release). If they use a language keyword in their system headers, then they can not expect it to work. Identifiers starting with a double underscore are reserved for ‘the implementation’ in C. Objective-C uses __weak, __strong, __unsafe_unretained, __block, and a few others. These are all prefixed with a double underscore to avoid conflicts with other identifiers and because the compiler is part of ‘the implementation’. NetBSD intentionally used an identifier that had been part of the Objective-C language for several years before they made this decision. That’s their choice, but it means that you can not use Objective-C with NetBSD system headers. David -- Sent from my STANTEC-ZEBRA _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
