On 14 June 2018 at 20:08, Jonathan Wakely <jwak...@redhat.com> wrote: >> Oops, indeed. But for gnu-attributes, surely we can decide whatever we >> want about what's >> valid and what's not? > > > We could say that #defining 'nonnull' and/or 'gnu' as a macro is > undefined, but then programs that the standard says are valid would > fail to compile, and we'd be a non-conforming implementation. > > We can use __attribute__(__nonnull__)) so that we accept those > programs (and be a conforming implementation). Why would we choose to > be non-conforming when we don't have to?
I can read the specification liberally enough that it might give us the freedom to disallow programs that #define names that our implementation uses for vendor attributes.