This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: What does it mean to include pthread.h with -std=c11?
On Fri, Dec 20, 2019 at 3:49 PM Florian Weimer <fw@deneb.enyo.de> wrote:
> * Zack Weinberg:
> >> I think there are no two sides here. #include <pthread.h> must work
> >> in ISO C mode. Everything else is just very wrong.
> >
> > I tend to agree, but we need a definition of "work".
> >
> > I've always assumed that the intention was something like: if you
> > request strict conformance and then include a header that was added to
> > ISO C and/or POSIX at a conformance level above the one you picked,
> > you get the set of definitions that that header had as of the oldest
> > supported standard that included it. (So, for instance, if you put
> > -std=c99 on the command line, don't define any _*_SOURCE macros, and
> > then include <threads.h>, you get what C11 specifies for that header,
> > and no more.) This is what I had in mind when I wrote
> > check-installed-headers.sh. I'm not aware of any cases where this
> > policy can't be made to work, but I haven't investigated it too
> > closely.
>
> That makes a lot of sense to me.
>
> A now-hypothetical example: C add lambda expressions and a future
> version of POSIX enables them for use with pthread_create. When you
> build in C11 mode (say) but with a POSIX version that includes this
> feature, this specific feature for pthread_create has to be left out.
>
> But these are really fringe cases. Bug 25271 is just an internal
> inconsistency in the header itself, which should be easy enough to
> fix.
Yes, I agree on both counts.
zw