[lsb-discuss] LSB, <sys/types.h>, POSIX, and size_t typedef
Wichmann, Mats D
mats.d.wichmann at intel.com
Mon Oct 16 10:49:28 PDT 2006
Okay, I looked one level deeper.
>The relevant text from the POSIX standard (IEEE Std 1003.1-2001
>(Revision of IEEE Std 1003.1-1996 and IEEE Std 1003.2-1992) is on
>pages 365--366 of the first of the four volumes:
>12932 The <sys/types.h> header shall include
>definitions for at least the following types:
>12963 size_t Used for
>sizes of objects.
>12964 ssize_t Used for
>a count of bytes or an error indication.
>It should be noted that <sys/types.h> is not part of ISO Standard C,
>so the ISO 1999 C and 1998 and 2003 C++ standards say nothing about
>that header file. Instead, they require size_t to be defined in
><stddef.h>, and well as in <stdio.h>, <stdlib.h>, <string.h>,
><time.h>, and <wchar.h>.
To be more precise, POSIX /also/ requires size_t to actually be
defined in <stddef.h>:
11205 The <stddef.h> header shall define the following types
11212 size_t Unsigned integer type of the result of the sizeof
The difference between these two wordings is that the <sys/types.h>
wording leaves room for definition by inclusion of another file;
LSB matches the requirement for stddef.h by defining it there.
The problem unique to the LSB header files is that inclusions
are generated by reference only, there is no current way to
say "<sys/types.h> needs to include <stddef.h>" other than for
the former to actually reference something defined in the latter.
This is not the case at the moment.
So somehow we need to solve the implementation problem in order
to make this go away.
More information about the lsb-discuss