]> git.ipfire.org Git - thirdparty/man-pages.git/blob - man3type/size_t.3type
cdda30d24560ba76f658ac134afca5f824e3b5fd
[thirdparty/man-pages.git] / man3type / size_t.3type
1 .\" Copyright (c) 2020-2022 by Alejandro Colomar <colomar.6.4.3@gmail.com>
2 .\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
3 .\"
4 .\" SPDX-License-Identifier: Linux-man-pages-copyleft
5 .\"
6 .\"
7 .TH SIZE_T 3type 2022-07-20 "Linux man-pages (unreleased)" "Linux Programmer's Manual"
8 .SH NAME
9 size_t, ssize_t \- count of bytes
10 .SH LIBRARY
11 Standard C library
12 .RI ( libc )
13 .SH SYNOPSIS
14 .nf
15 .B #include <stddef.h>
16 .PP
17 .BR typedef " /* ... */ " size_t;
18 .PP
19 .B #include <sys/types.h>
20 .PP
21 .BR typedef " /* ... */ " ssize_t;
22 .fi
23 .SH DESCRIPTION
24 .TP
25 .I size_t
26 Used for a count of bytes.
27 It is the result of the
28 .IR sizeof ()
29 operator.
30 It is an unsigned integer type
31 capable of storing values in the range
32 .RB [ 0 ,
33 .BR SIZE_MAX ].
34 .TP
35 .I ssize_t
36 Used for a count of bytes or an error indication.
37 It is a signed integer type
38 capable of storing values al least in the range
39 .RB [ \-1 ,
40 .BR SSIZE_MAX ].
41 .SS Use with printf(3) and scanf(3)
42 .TP
43 .I size_t
44 The length modifier for
45 .I size_t
46 for the
47 .BR printf (3)
48 and the
49 .BR scanf (3)
50 families of functions is
51 .BR z ,
52 resulting commonly in
53 .B %zu
54 or
55 .B %zx
56 for printing
57 .I size_t
58 values.
59 .TP
60 .I ssize_t
61 Glibc and most other implementations provide a length modifier for
62 .I ssize_t
63 for the
64 .BR printf (3)
65 and the
66 .BR scanf (3)
67 families of functions,
68 which is
69 .BR z ;
70 resulting commonly in
71 .B %zd
72 or
73 .B %zi
74 for printing
75 .I ssize_t
76 values.
77 Although
78 .B z
79 works for
80 .I ssize_t
81 on most implementations,
82 portable POSIX programs should avoid using it\(emfor example,
83 by converting the value to
84 .I intmax_t
85 and using its length modifier
86 .RB ( j ).
87 .SH VERSIONS
88 .TP
89 .I size_t
90 .IR <aio.h> ,
91 .IR <glob.h> ,
92 .IR <grp.h> ,
93 .IR <iconv.h> ,
94 .IR <mqueue.h> ,
95 .IR <pwd.h> ,
96 .IR <signal.h> ,
97 and
98 .I <sys/socket.h>
99 define
100 .I size_t
101 since POSIX.1-2008.
102 .TP
103 .I ssize_t
104 .IR <aio.h> ,
105 .IR <mqueue.h> ,
106 and
107 .I <sys/socket.h>
108 define
109 .I ssize_t
110 since POSIX.1-2008.
111 .SH STANDARDS
112 .PD 0
113 .IR size_t :
114 C99 and later;
115 POSIX.1-2001 and later.
116 .PP
117 .IR ssize_t :
118 POSIX.1-2001 and later.
119 .PD
120 .SH NOTES
121 .TP
122 .I size_t
123 The following headers also provide
124 .IR size_t :
125 .IR <aio.h> ,
126 .IR <glob.h> ,
127 .IR <grp.h> ,
128 .IR <iconv.h> ,
129 .IR <monetary.h> ,
130 .IR <mqueue.h> ,
131 .IR <ndbm.h> ,
132 .IR <pwd.h> ,
133 .IR <regex.h> ,
134 .IR <search.h> ,
135 .IR <signal.h> ,
136 .IR <stdio.h> ,
137 .IR <stdlib.h> ,
138 .IR <string.h> ,
139 .IR <strings.h> ,
140 .IR <sys/mman.h> ,
141 .IR <sys/msg.h> ,
142 .IR <sys/sem.h> ,
143 .IR <sys/shm.h> ,
144 .IR <sys/socket.h> ,
145 .IR <sys/types.h> ,
146 .IR <sys/uio.h> ,
147 .IR <time.h> ,
148 .IR <unistd.h> ,
149 .IR <wchar.h> ,
150 and
151 .IR <wordexp.h> .
152 .TP
153 .I ssize_t
154 The following headers also provide
155 .IR ssize_t :
156 .IR <aio.h> ,
157 .IR <monetary.h> ,
158 .IR <mqueue.h> ,
159 .IR <stdio.h> ,
160 .IR <sys/msg.h> ,
161 .IR <sys/socket.h> ,
162 .IR <sys/uio.h> ,
163 and
164 .IR <unistd.h> .
165 .SH SEE ALSO
166 .BR read (2),
167 .BR readlink (2),
168 .BR readv (2),
169 .BR recv (2),
170 .BR send (2),
171 .BR write (2),
172 .BR fread (3),
173 .BR fwrite (3),
174 .BR memcmp (3),
175 .BR memcpy (3),
176 .BR memset (3),
177 .BR offsetof (3),
178 .BR ptrdiff_t (3type)