Re: Issue: #include <stdio.h> shall not cause intmax_t to be defined
Pavel M <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAL9Mx1sv6jE3LxChMGT=_KLs8Vk_cAYCP7Tv+HyhEO-r24Nzeg@mail.gmail.com> |
> Is there actually a "MUST NOT" defined anywhere in the standards or was this change unnecessary? C11 specifies when header X includes header Y. Examples: 7.25 Type-generic math <tgmath.h>: > The header <tgmath.h> includes the headers <math.h> and <complex.h> 7.26 Threads <threads.h>: > The header <threads.h> includes the header <time.h> 7.8 Format conversion of integer types <inttypes.h>: > The header <inttypes.h> includes the header <stdint.h> There are no more occurrences of "includes the header". -- Pavel On Wed, 4 May 2022 at 16:13, Corinna Vinschen <[email protected]> wrote: > On May 4 11:02, Sebastian Huber wrote: > > On 04/05/2022 10:54, Corinna Vinschen wrote: > > > On May 4 10:41, Sebastian Huber wrote: > > > > On 04/05/2022 10:37, Corinna Vinschen wrote: > > > > > On May 4 09:59, Sebastian Huber wrote: > > > > > > On 03/05/2022 19:00, Corinna Vinschen wrote: > > > > > > > On Apr 27 00:41, Pavel M wrote: > > > > > > > > Hi all, > > > > > > > > > > > > > > > > Issue: #include <stdio.h> shall not cause intmax_t to be > defined. However, > > > > > > > > now it causes. This is because now <stdio.h> includes > <sys/types.h>, which > > > > > > > > includes <sys/_stdint.h>. > > > > > > > > Note: per C11 the types intmax_t and uintmax_t defined in > the header > > > > > > > > <stdint.h>, and <stdint.h> is not included in <stdio.h>. > > > > > > > > Consider fixing. > > > > > > > I pushed a patch to fix this. > > > > > > In FreeBSD, <sys/types.h> provides the stdint.h types. Could we > bring back > > > > > > this with > > > > > Is that with FreeeBSD only, or is that with BSDs in general? > > > > It seems to be a general BSD feature: > > > > > > > > https://github.com/openbsd/src/blob/master/sys/sys/types.h#L75 > > > > > > > > > http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/types.h?rev=1.105&content-type=text/x-cvsweb-markup > > > If the BSDs expose stdint.h types via stdio.h anyway, what's the sense > > > of not exposing it in the non-_BSD_VISIBLE scenario? _BSD_VISIBLE is > > > default anyway, so the non-exposure of the stdint types is restricted > to > > > files which define _XOPEN_SOURCE or some such. > > > > > > Is there actually a "MUST NOT" defined anywhere in the standards or > > > was this change unnecessary? > > > > I think the reported problem with stdio.h is because the Newlib stdio.h > > includes <sys/types.h>. In FreeBSD for example, <sys/_types.h> is > included > > with local type definitions, see: > > > > https://sourceware.org/pipermail/newlib/2022/019592.html > > I guess I'm an idiot. I just dropped my patch and applied yours > instead. It fixes *all* the problems requiring more patches to other > files I saw while building with my change to sys/types.h. > > So, I think what I'll do is revert my patch and apply yours instead. > > The other patch of your patch series is obseleted by this. > > > Thanks a lot! > > > Corinna > >