The definitive reference is the standard.
The C standard defines size_t
and says it's defined in <stddef.h>
(on GNU/Linux that header is provided by GCC) and POSIX requires it to be defined after including <sys/types.h>
The POSIX standard defines sockaddr_in6
in <netinet/in.h>
also for eg : size_t, which is typically an unsigned int , why we define > size_t val ; rather than unsigned int val ;
Because it might not be unsigned int
. On my platform it's unsigned long
, so by writing size_t
you get a type guaranteed to be able to represent the necessary range of values. Using unsigned int
doesn't guarantee that.