1@c This node must have no pointers. 2@node Language Features 3@c @node Language Features, Library Summary, , Top 4@c %MENU% C language features provided by the library 5@appendix C Language Facilities in the Library 6 7Some of the facilities implemented by the C library really should be 8thought of as parts of the C language itself. These facilities ought to 9be documented in the C Language Manual, not in the library manual; but 10since we don't have the language manual yet, and documentation for these 11features has been written, we are publishing it here. 12 13@menu 14* Consistency Checking:: Using @code{assert} to abort if 15 something ``impossible'' happens. 16* Variadic Functions:: Defining functions with varying numbers 17 of args. 18* Null Pointer Constant:: The macro @code{NULL}. 19* Important Data Types:: Data types for object sizes. 20* Data Type Measurements:: Parameters of data type representations. 21@end menu 22 23@node Consistency Checking 24@section Explicitly Checking Internal Consistency 25@cindex consistency checking 26@cindex impossible events 27@cindex assertions 28 29When you're writing a program, it's often a good idea to put in checks 30at strategic places for ``impossible'' errors or violations of basic 31assumptions. These kinds of checks are helpful in debugging problems 32with the interfaces between different parts of the program, for example. 33 34@pindex assert.h 35The @code{assert} macro, defined in the header file @file{assert.h}, 36provides a convenient way to abort the program while printing a message 37about where in the program the error was detected. 38 39@vindex NDEBUG 40Once you think your program is debugged, you can disable the error 41checks performed by the @code{assert} macro by recompiling with the 42macro @code{NDEBUG} defined. This means you don't actually have to 43change the program source code to disable these checks. 44 45But disabling these consistency checks is undesirable unless they make 46the program significantly slower. All else being equal, more error 47checking is good no matter who is running the program. A wise user 48would rather have a program crash, visibly, than have it return nonsense 49without indicating anything might be wrong. 50 51@deftypefn Macro void assert (int @var{expression}) 52@standards{ISO, assert.h} 53@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asucorrupt{}}@acunsafe{@acsmem{} @aculock{} @acucorrupt{}}} 54@c assert_fail_base calls asprintf, and fflushes stderr. 55Verify the programmer's belief that @var{expression} is nonzero at 56this point in the program. 57 58If @code{NDEBUG} is not defined, @code{assert} tests the value of 59@var{expression}. If it is false (zero), @code{assert} aborts the 60program (@pxref{Aborting a Program}) after printing a message of the 61form: 62 63@smallexample 64@file{@var{file}}:@var{linenum}: @var{function}: Assertion `@var{expression}' failed. 65@end smallexample 66 67@noindent 68on the standard error stream @code{stderr} (@pxref{Standard Streams}). 69The filename and line number are taken from the C preprocessor macros 70@code{__FILE__} and @code{__LINE__} and specify where the call to 71@code{assert} was made. When using the GNU C compiler, the name of 72the function which calls @code{assert} is taken from the built-in 73variable @code{__PRETTY_FUNCTION__}; with older compilers, the function 74name and following colon are omitted. 75 76If the preprocessor macro @code{NDEBUG} is defined before 77@file{assert.h} is included, the @code{assert} macro is defined to do 78absolutely nothing. 79 80@strong{Warning:} Even the argument expression @var{expression} is not 81evaluated if @code{NDEBUG} is in effect. So never use @code{assert} 82with arguments that involve side effects. For example, @code{assert 83(++i > 0);} is a bad idea, because @code{i} will not be incremented if 84@code{NDEBUG} is defined. 85@end deftypefn 86 87Sometimes the ``impossible'' condition you want to check for is an error 88return from an operating system function. Then it is useful to display 89not only where the program crashes, but also what error was returned. 90The @code{assert_perror} macro makes this easy. 91 92@deftypefn Macro void assert_perror (int @var{errnum}) 93@standards{GNU, assert.h} 94@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asucorrupt{}}@acunsafe{@acsmem{} @aculock{} @acucorrupt{}}} 95@c assert_fail_base calls asprintf, and fflushes stderr. 96Similar to @code{assert}, but verifies that @var{errnum} is zero. 97 98If @code{NDEBUG} is not defined, @code{assert_perror} tests the value of 99@var{errnum}. If it is nonzero, @code{assert_perror} aborts the program 100after printing a message of the form: 101 102@smallexample 103@file{@var{file}}:@var{linenum}: @var{function}: @var{error text} 104@end smallexample 105 106@noindent 107on the standard error stream. The file name, line number, and function 108name are as for @code{assert}. The error text is the result of 109@w{@code{strerror (@var{errnum})}}. @xref{Error Messages}. 110 111Like @code{assert}, if @code{NDEBUG} is defined before @file{assert.h} 112is included, the @code{assert_perror} macro does absolutely nothing. It 113does not evaluate the argument, so @var{errnum} should not have any side 114effects. It is best for @var{errnum} to be just a simple variable 115reference; often it will be @code{errno}. 116 117This macro is a GNU extension. 118@end deftypefn 119 120@strong{Usage note:} The @code{assert} facility is designed for 121detecting @emph{internal inconsistency}; it is not suitable for 122reporting invalid input or improper usage by the @emph{user} of the 123program. 124 125The information in the diagnostic messages printed by the @code{assert} 126and @code{assert_perror} macro is intended to help you, the programmer, 127track down the cause of a bug, but is not really useful for telling a user 128of your program why his or her input was invalid or why a command could not 129be carried out. What's more, your program should not abort when given 130invalid input, as @code{assert} would do---it should exit with nonzero 131status (@pxref{Exit Status}) after printing its error messages, or perhaps 132read another command or move on to the next input file. 133 134@xref{Error Messages}, for information on printing error messages for 135problems that @emph{do not} represent bugs in the program. 136 137 138@node Variadic Functions 139@section Variadic Functions 140@cindex variable number of arguments 141@cindex variadic functions 142@cindex optional arguments 143 144@w{ISO C} defines a syntax for declaring a function to take a variable 145number or type of arguments. (Such functions are referred to as 146@dfn{varargs functions} or @dfn{variadic functions}.) However, the 147language itself provides no mechanism for such functions to access their 148non-required arguments; instead, you use the variable arguments macros 149defined in @file{stdarg.h}. 150 151This section describes how to declare variadic functions, how to write 152them, and how to call them properly. 153 154@strong{Compatibility Note:} Many older C dialects provide a similar, 155but incompatible, mechanism for defining functions with variable numbers 156of arguments, using @file{varargs.h}. 157 158@menu 159* Why Variadic:: Reasons for making functions take 160 variable arguments. 161* How Variadic:: How to define and call variadic functions. 162* Variadic Example:: A complete example. 163@end menu 164 165@node Why Variadic 166@subsection Why Variadic Functions are Used 167 168Ordinary C functions take a fixed number of arguments. When you define 169a function, you specify the data type for each argument. Every call to 170the function should supply the expected number of arguments, with types 171that can be converted to the specified ones. Thus, if the function 172@samp{foo} is declared with @code{int foo (int, char *);} then you must 173call it with two arguments, a number (any kind will do) and a string 174pointer. 175 176But some functions perform operations that can meaningfully accept an 177unlimited number of arguments. 178 179In some cases a function can handle any number of values by operating on 180all of them as a block. For example, consider a function that allocates 181a one-dimensional array with @code{malloc} to hold a specified set of 182values. This operation makes sense for any number of values, as long as 183the length of the array corresponds to that number. Without facilities 184for variable arguments, you would have to define a separate function for 185each possible array size. 186 187The library function @code{printf} (@pxref{Formatted Output}) is an 188example of another class of function where variable arguments are 189useful. This function prints its arguments (which can vary in type as 190well as number) under the control of a format template string. 191 192These are good reasons to define a @dfn{variadic} function which can 193handle as many arguments as the caller chooses to pass. 194 195Some functions such as @code{open} take a fixed set of arguments, but 196occasionally ignore the last few. Strict adherence to @w{ISO C} requires 197these functions to be defined as variadic; in practice, however, the GNU 198C compiler and most other C compilers let you define such a function to 199take a fixed set of arguments---the most it can ever use---and then only 200@emph{declare} the function as variadic (or not declare its arguments 201at all!). 202 203@node How Variadic 204@subsection How Variadic Functions are Defined and Used 205 206Defining and using a variadic function involves three steps: 207 208@itemize @bullet 209@item 210@emph{Define} the function as variadic, using an ellipsis 211(@samp{@dots{}}) in the argument list, and using special macros to 212access the variable arguments. @xref{Receiving Arguments}. 213 214@item 215@emph{Declare} the function as variadic, using a prototype with an 216ellipsis (@samp{@dots{}}), in all the files which call it. 217@xref{Variadic Prototypes}. 218 219@item 220@emph{Call} the function by writing the fixed arguments followed by the 221additional variable arguments. @xref{Calling Variadics}. 222@end itemize 223 224@menu 225* Variadic Prototypes:: How to make a prototype for a function 226 with variable arguments. 227* Receiving Arguments:: Steps you must follow to access the 228 optional argument values. 229* How Many Arguments:: How to decide whether there are more arguments. 230* Calling Variadics:: Things you need to know about calling 231 variable arguments functions. 232* Argument Macros:: Detailed specification of the macros 233 for accessing variable arguments. 234@end menu 235 236@node Variadic Prototypes 237@subsubsection Syntax for Variable Arguments 238@cindex function prototypes (variadic) 239@cindex prototypes for variadic functions 240@cindex variadic function prototypes 241 242A function that accepts a variable number of arguments must be declared 243with a prototype that says so. You write the fixed arguments as usual, 244and then tack on @samp{@dots{}} to indicate the possibility of 245additional arguments. The syntax of @w{ISO C} requires at least one fixed 246argument before the @samp{@dots{}}. For example, 247 248@smallexample 249int 250func (const char *a, int b, @dots{}) 251@{ 252 @dots{} 253@} 254@end smallexample 255 256@noindent 257defines a function @code{func} which returns an @code{int} and takes two 258required arguments, a @code{const char *} and an @code{int}. These are 259followed by any number of anonymous arguments. 260 261@strong{Portability note:} For some C compilers, the last required 262argument must not be declared @code{register} in the function 263definition. Furthermore, this argument's type must be 264@dfn{self-promoting}: that is, the default promotions must not change 265its type. This rules out array and function types, as well as 266@code{float}, @code{char} (whether signed or not) and @w{@code{short int}} 267(whether signed or not). This is actually an @w{ISO C} requirement. 268 269@node Receiving Arguments 270@subsubsection Receiving the Argument Values 271@cindex variadic function argument access 272@cindex arguments (variadic functions) 273 274Ordinary fixed arguments have individual names, and you can use these 275names to access their values. But optional arguments have no 276names---nothing but @samp{@dots{}}. How can you access them? 277 278@pindex stdarg.h 279The only way to access them is sequentially, in the order they were 280written, and you must use special macros from @file{stdarg.h} in the 281following three step process: 282 283@enumerate 284@item 285You initialize an argument pointer variable of type @code{va_list} using 286@code{va_start}. The argument pointer when initialized points to the 287first optional argument. 288 289@item 290You access the optional arguments by successive calls to @code{va_arg}. 291The first call to @code{va_arg} gives you the first optional argument, 292the next call gives you the second, and so on. 293 294You can stop at any time if you wish to ignore any remaining optional 295arguments. It is perfectly all right for a function to access fewer 296arguments than were supplied in the call, but you will get garbage 297values if you try to access too many arguments. 298 299@item 300You indicate that you are finished with the argument pointer variable by 301calling @code{va_end}. 302 303(In practice, with most C compilers, calling @code{va_end} does nothing. 304This is always true in the GNU C compiler. But you might as well call 305@code{va_end} just in case your program is someday compiled with a peculiar 306compiler.) 307@end enumerate 308 309@xref{Argument Macros}, for the full definitions of @code{va_start}, 310@code{va_arg} and @code{va_end}. 311 312Steps 1 and 3 must be performed in the function that accepts the 313optional arguments. However, you can pass the @code{va_list} variable 314as an argument to another function and perform all or part of step 2 315there. 316 317You can perform the entire sequence of three steps multiple times 318within a single function invocation. If you want to ignore the optional 319arguments, you can do these steps zero times. 320 321You can have more than one argument pointer variable if you like. You 322can initialize each variable with @code{va_start} when you wish, and 323then you can fetch arguments with each argument pointer as you wish. 324Each argument pointer variable will sequence through the same set of 325argument values, but at its own pace. 326 327@strong{Portability note:} With some compilers, once you pass an 328argument pointer value to a subroutine, you must not keep using the same 329argument pointer value after that subroutine returns. For full 330portability, you should just pass it to @code{va_end}. This is actually 331an @w{ISO C} requirement, but most ANSI C compilers work happily 332regardless. 333 334@node How Many Arguments 335@subsubsection How Many Arguments Were Supplied 336@cindex number of arguments passed 337@cindex how many arguments 338@cindex arguments, how many 339 340There is no general way for a function to determine the number and type 341of the optional arguments it was called with. So whoever designs the 342function typically designs a convention for the caller to specify the number 343and type of arguments. It is up to you to define an appropriate calling 344convention for each variadic function, and write all calls accordingly. 345 346One kind of calling convention is to pass the number of optional 347arguments as one of the fixed arguments. This convention works provided 348all of the optional arguments are of the same type. 349 350A similar alternative is to have one of the required arguments be a bit 351mask, with a bit for each possible purpose for which an optional 352argument might be supplied. You would test the bits in a predefined 353sequence; if the bit is set, fetch the value of the next argument, 354otherwise use a default value. 355 356A required argument can be used as a pattern to specify both the number 357and types of the optional arguments. The format string argument to 358@code{printf} is one example of this (@pxref{Formatted Output Functions}). 359 360Another possibility is to pass an ``end marker'' value as the last 361optional argument. For example, for a function that manipulates an 362arbitrary number of pointer arguments, a null pointer might indicate the 363end of the argument list. (This assumes that a null pointer isn't 364otherwise meaningful to the function.) The @code{execl} function works 365in just this way; see @ref{Executing a File}. 366 367 368@node Calling Variadics 369@subsubsection Calling Variadic Functions 370@cindex variadic functions, calling 371@cindex calling variadic functions 372@cindex declaring variadic functions 373 374You don't have to do anything special to call a variadic function. 375Just put the arguments (required arguments, followed by optional ones) 376inside parentheses, separated by commas, as usual. But you must declare 377the function with a prototype and know how the argument values are converted. 378 379In principle, functions that are @emph{defined} to be variadic must also 380be @emph{declared} to be variadic using a function prototype whenever 381you call them. (@xref{Variadic Prototypes}, for how.) This is because 382some C compilers use a different calling convention to pass the same set 383of argument values to a function depending on whether that function 384takes variable arguments or fixed arguments. 385 386In practice, the GNU C compiler always passes a given set of argument 387types in the same way regardless of whether they are optional or 388required. So, as long as the argument types are self-promoting, you can 389safely omit declaring them. Usually it is a good idea to declare the 390argument types for variadic functions, and indeed for all functions. 391But there are a few functions which it is extremely convenient not to 392have to declare as variadic---for example, @code{open} and 393@code{printf}. 394 395@cindex default argument promotions 396@cindex argument promotion 397Since the prototype doesn't specify types for optional arguments, in a 398call to a variadic function the @dfn{default argument promotions} are 399performed on the optional argument values. This means the objects of 400type @code{char} or @w{@code{short int}} (whether signed or not) are 401promoted to either @code{int} or @w{@code{unsigned int}}, as 402appropriate; and that objects of type @code{float} are promoted to type 403@code{double}. So, if the caller passes a @code{char} as an optional 404argument, it is promoted to an @code{int}, and the function can access 405it with @code{va_arg (@var{ap}, int)}. 406 407Conversion of the required arguments is controlled by the function 408prototype in the usual way: the argument expression is converted to the 409declared argument type as if it were being assigned to a variable of 410that type. 411 412@node Argument Macros 413@subsubsection Argument Access Macros 414 415Here are descriptions of the macros used to retrieve variable arguments. 416These macros are defined in the header file @file{stdarg.h}. 417@pindex stdarg.h 418 419@deftp {Data Type} va_list 420@standards{ISO, stdarg.h} 421The type @code{va_list} is used for argument pointer variables. 422@end deftp 423 424@deftypefn {Macro} void va_start (va_list @var{ap}, @var{last-required}) 425@standards{ISO, stdarg.h} 426@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} 427@c This is no longer provided by glibc, but rather by the compiler. 428This macro initializes the argument pointer variable @var{ap} to point 429to the first of the optional arguments of the current function; 430@var{last-required} must be the last required argument to the function. 431@end deftypefn 432 433@deftypefn {Macro} @var{type} va_arg (va_list @var{ap}, @var{type}) 434@standards{ISO, stdarg.h} 435@safety{@prelim{}@mtsafe{@mtsrace{:ap}}@assafe{}@acunsafe{@acucorrupt{}}} 436@c This is no longer provided by glibc, but rather by the compiler. 437@c Unlike the other va_ macros, that either start/end the lifetime of 438@c the va_list object or don't modify it, this one modifies ap, and it 439@c may leave it in a partially updated state. 440The @code{va_arg} macro returns the value of the next optional argument, 441and modifies the value of @var{ap} to point to the subsequent argument. 442Thus, successive uses of @code{va_arg} return successive optional 443arguments. 444 445The type of the value returned by @code{va_arg} is @var{type} as 446specified in the call. @var{type} must be a self-promoting type (not 447@code{char} or @code{short int} or @code{float}) that matches the type 448of the actual argument. 449@end deftypefn 450 451@deftypefn {Macro} void va_end (va_list @var{ap}) 452@standards{ISO, stdarg.h} 453@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} 454@c This is no longer provided by glibc, but rather by the compiler. 455This ends the use of @var{ap}. After a @code{va_end} call, further 456@code{va_arg} calls with the same @var{ap} may not work. You should invoke 457@code{va_end} before returning from the function in which @code{va_start} 458was invoked with the same @var{ap} argument. 459 460In @theglibc{}, @code{va_end} does nothing, and you need not ever 461use it except for reasons of portability. 462 463@end deftypefn 464 465Sometimes it is necessary to parse the list of parameters more than once 466or one wants to remember a certain position in the parameter list. To 467do this, one will have to make a copy of the current value of the 468argument. But @code{va_list} is an opaque type and one cannot necessarily 469assign the value of one variable of type @code{va_list} to another variable 470of the same type. 471 472@deftypefn {Macro} void va_copy (va_list @var{dest}, va_list @var{src}) 473@deftypefnx {Macro} void __va_copy (va_list @var{dest}, va_list @var{src}) 474@standardsx{va_copy, C99, stdarg.h} 475@standardsx{__va_copy, GNU, stdarg.h} 476@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} 477The @code{va_copy} macro allows copying of objects of type 478@code{va_list} even if this is not an integral type. The argument pointer 479in @var{dest} is initialized to point to the same argument as the 480pointer in @var{src}. 481 482@code{va_copy} was added in ISO C99. When building for strict 483conformance to ISO C90 (@samp{gcc -std=c90}), it is not available. 484GCC provides @code{__va_copy}, as an extension, in any standards mode; 485before GCC 3.0, it was the only macro for this functionality. 486 487These macros are no longer provided by @theglibc{}, but rather by the 488compiler. 489@end deftypefn 490 491If you want to use @code{va_copy} and be portable to pre-C99 systems, 492you should always be prepared for the 493possibility that this macro will not be available. On architectures where a 494simple assignment is invalid, hopefully @code{va_copy} @emph{will} be available, 495so one should always write something like this if concerned about 496pre-C99 portability: 497 498@smallexample 499@{ 500 va_list ap, save; 501 @dots{} 502#ifdef va_copy 503 va_copy (save, ap); 504#else 505 save = ap; 506#endif 507 @dots{} 508@} 509@end smallexample 510 511 512@node Variadic Example 513@subsection Example of a Variadic Function 514 515Here is a complete sample function that accepts a variable number of 516arguments. The first argument to the function is the count of remaining 517arguments, which are added up and the result returned. While trivial, 518this function is sufficient to illustrate how to use the variable 519arguments facility. 520 521@comment Yes, this example has been tested. 522@smallexample 523@include add.c.texi 524@end smallexample 525 526@node Null Pointer Constant 527@section Null Pointer Constant 528@cindex null pointer constant 529 530The null pointer constant is guaranteed not to point to any real object. 531You can assign it to any pointer variable since it has type @code{void 532*}. The preferred way to write a null pointer constant is with 533@code{NULL}. 534 535@deftypevr Macro {void *} NULL 536@standards{ISO, stddef.h} 537This is a null pointer constant. 538@end deftypevr 539 540You can also use @code{0} or @code{(void *)0} as a null pointer 541constant, but using @code{NULL} is cleaner because it makes the purpose 542of the constant more evident. 543 544If you use the null pointer constant as a function argument, then for 545complete portability you should make sure that the function has a 546prototype declaration. Otherwise, if the target machine has two 547different pointer representations, the compiler won't know which 548representation to use for that argument. You can avoid the problem by 549explicitly casting the constant to the proper pointer type, but we 550recommend instead adding a prototype for the function you are calling. 551 552@node Important Data Types 553@section Important Data Types 554 555The result of subtracting two pointers in C is always an integer, but the 556precise data type varies from C compiler to C compiler. Likewise, the 557data type of the result of @code{sizeof} also varies between compilers. 558ISO C defines standard aliases for these two types, so you can refer to 559them in a portable fashion. They are defined in the header file 560@file{stddef.h}. 561@pindex stddef.h 562 563@deftp {Data Type} ptrdiff_t 564@standards{ISO, stddef.h} 565This is the signed integer type of the result of subtracting two 566pointers. For example, with the declaration @code{char *p1, *p2;}, the 567expression @code{p2 - p1} is of type @code{ptrdiff_t}. This will 568probably be one of the standard signed integer types (@w{@code{short 569int}}, @code{int} or @w{@code{long int}}), but might be a nonstandard 570type that exists only for this purpose. 571@end deftp 572 573@deftp {Data Type} size_t 574@standards{ISO, stddef.h} 575This is an unsigned integer type used to represent the sizes of objects. 576The result of the @code{sizeof} operator is of this type, and functions 577such as @code{malloc} (@pxref{Unconstrained Allocation}) and 578@code{memcpy} (@pxref{Copying Strings and Arrays}) accept arguments of 579this type to specify object sizes. On systems using @theglibc{}, this 580will be @w{@code{unsigned int}} or @w{@code{unsigned long int}}. 581 582@strong{Usage Note:} @code{size_t} is the preferred way to declare any 583arguments or variables that hold the size of an object. 584@end deftp 585 586@strong{Compatibility Note:} Implementations of C before the advent of 587@w{ISO C} generally used @code{unsigned int} for representing object sizes 588and @code{int} for pointer subtraction results. They did not 589necessarily define either @code{size_t} or @code{ptrdiff_t}. Unix 590systems did define @code{size_t}, in @file{sys/types.h}, but the 591definition was usually a signed type. 592 593@node Data Type Measurements 594@section Data Type Measurements 595 596Most of the time, if you choose the proper C data type for each object 597in your program, you need not be concerned with just how it is 598represented or how many bits it uses. When you do need such 599information, the C language itself does not provide a way to get it. 600The header files @file{limits.h} and @file{float.h} contain macros 601which give you this information in full detail. 602 603@menu 604* Width of Type:: How many bits does an integer type hold? 605* Range of Type:: What are the largest and smallest values 606 that an integer type can hold? 607* Floating Type Macros:: Parameters that measure the floating point types. 608* Structure Measurement:: Getting measurements on structure types. 609@end menu 610 611@node Width of Type 612@subsection Width of an Integer Type 613@cindex integer type width 614@cindex width of integer type 615@cindex type measurements, integer 616@pindex limits.h 617 618TS 18661-1:2014 defines macros for the width of integer types (the 619number of value and sign bits). One benefit of these macros is they 620can be used in @code{#if} preprocessor directives, whereas 621@code{sizeof} cannot. The following macros are defined in 622@file{limits.h}. 623 624@vtable @code 625@item CHAR_WIDTH 626@itemx SCHAR_WIDTH 627@itemx UCHAR_WIDTH 628@itemx SHRT_WIDTH 629@itemx USHRT_WIDTH 630@itemx INT_WIDTH 631@itemx UINT_WIDTH 632@itemx LONG_WIDTH 633@itemx ULONG_WIDTH 634@itemx LLONG_WIDTH 635@itemx ULLONG_WIDTH 636@standards{ISO, limits.h} 637These are the widths of the types @code{char}, @code{signed char}, 638@code{unsigned char}, @code{short int}, @code{unsigned short int}, 639@code{int}, @code{unsigned int}, @code{long int}, @code{unsigned long 640int}, @code{long long int} and @code{unsigned long long int}, 641respectively. 642@end vtable 643 644Further such macros are defined in @file{stdint.h}. Apart from those 645for types specified by width (@pxref{Integers}), the following are 646defined: 647 648@vtable @code 649@item INTPTR_WIDTH 650@itemx UINTPTR_WIDTH 651@itemx PTRDIFF_WIDTH 652@itemx SIG_ATOMIC_WIDTH 653@itemx SIZE_WIDTH 654@itemx WCHAR_WIDTH 655@itemx WINT_WIDTH 656@standards{ISO, stdint.h} 657These are the widths of the types @code{intptr_t}, @code{uintptr_t}, 658@code{ptrdiff_t}, @code{sig_atomic_t}, @code{size_t}, @code{wchar_t} 659and @code{wint_t}, respectively. 660@end vtable 661 662A common reason that a program needs to know how many bits are in an 663integer type is for using an array of @code{unsigned long int} as a 664bit vector. You can access the bit at index @var{n} with: 665 666@smallexample 667vector[@var{n} / ULONG_WIDTH] & (1UL << (@var{n} % ULONG_WIDTH)) 668@end smallexample 669 670Before @code{ULONG_WIDTH} was a part of the C language, 671@code{CHAR_BIT} was used to compute the number of bits in an integer 672data type. 673 674@deftypevr Macro int CHAR_BIT 675@standards{C90, limits.h} 676This is the number of bits in a @code{char}. POSIX.1-2001 requires 677this to be 8. 678@end deftypevr 679 680The number of bits in any data type @var{type} can be computed like 681this: 682 683@smallexample 684sizeof (@var{type}) * CHAR_BIT 685@end smallexample 686 687That expression includes padding bits as well as value and sign bits. 688On all systems supported by @theglibc{}, standard integer types other 689than @code{_Bool} do not have any padding bits. 690 691@strong{Portability Note:} One cannot actually easily compute the 692number of usable bits in a portable manner. 693 694@node Range of Type 695@subsection Range of an Integer Type 696@cindex integer type range 697@cindex range of integer type 698@cindex limits, integer types 699 700Suppose you need to store an integer value which can range from zero to 701one million. Which is the smallest type you can use? There is no 702general rule; it depends on the C compiler and target machine. You can 703use the @samp{MIN} and @samp{MAX} macros in @file{limits.h} to determine 704which type will work. 705 706Each signed integer type has a pair of macros which give the smallest 707and largest values that it can hold. Each unsigned integer type has one 708such macro, for the maximum value; the minimum value is, of course, 709zero. 710 711The values of these macros are all integer constant expressions. The 712@samp{MAX} and @samp{MIN} macros for @code{char} and @w{@code{short 713int}} types have values of type @code{int}. The @samp{MAX} and 714@samp{MIN} macros for the other types have values of the same type 715described by the macro---thus, @code{ULONG_MAX} has type 716@w{@code{unsigned long int}}. 717 718@comment Extra blank lines make it look better. 719@vtable @code 720@item SCHAR_MIN 721@standards{ISO, limits.h} 722 723This is the minimum value that can be represented by a @w{@code{signed char}}. 724 725@item SCHAR_MAX 726@itemx UCHAR_MAX 727@standards{ISO, limits.h} 728 729These are the maximum values that can be represented by a 730@w{@code{signed char}} and @w{@code{unsigned char}}, respectively. 731 732@item CHAR_MIN 733@standards{ISO, limits.h} 734 735This is the minimum value that can be represented by a @code{char}. 736It's equal to @code{SCHAR_MIN} if @code{char} is signed, or zero 737otherwise. 738 739@item CHAR_MAX 740@standards{ISO, limits.h} 741 742This is the maximum value that can be represented by a @code{char}. 743It's equal to @code{SCHAR_MAX} if @code{char} is signed, or 744@code{UCHAR_MAX} otherwise. 745 746@item SHRT_MIN 747@standards{ISO, limits.h} 748 749This is the minimum value that can be represented by a @w{@code{signed 750short int}}. On most machines that @theglibc{} runs on, 751@code{short} integers are 16-bit quantities. 752 753@item SHRT_MAX 754@itemx USHRT_MAX 755@standards{ISO, limits.h} 756 757These are the maximum values that can be represented by a 758@w{@code{signed short int}} and @w{@code{unsigned short int}}, 759respectively. 760 761@item INT_MIN 762@standards{ISO, limits.h} 763 764This is the minimum value that can be represented by a @w{@code{signed 765int}}. On most machines that @theglibc{} runs on, an @code{int} is 766a 32-bit quantity. 767 768@item INT_MAX 769@itemx UINT_MAX 770@standards{ISO, limits.h} 771 772These are the maximum values that can be represented by, respectively, 773the type @w{@code{signed int}} and the type @w{@code{unsigned int}}. 774 775@item LONG_MIN 776@standards{ISO, limits.h} 777 778This is the minimum value that can be represented by a @w{@code{signed 779long int}}. On most machines that @theglibc{} runs on, @code{long} 780integers are 32-bit quantities, the same size as @code{int}. 781 782@item LONG_MAX 783@itemx ULONG_MAX 784@standards{ISO, limits.h} 785 786These are the maximum values that can be represented by a 787@w{@code{signed long int}} and @code{unsigned long int}, respectively. 788 789@item LLONG_MIN 790@standards{ISO, limits.h} 791 792This is the minimum value that can be represented by a @w{@code{signed 793long long int}}. On most machines that @theglibc{} runs on, 794@w{@code{long long}} integers are 64-bit quantities. 795 796@item LLONG_MAX 797@itemx ULLONG_MAX 798@standards{ISO, limits.h} 799 800These are the maximum values that can be represented by a @code{signed 801long long int} and @code{unsigned long long int}, respectively. 802 803@item LONG_LONG_MIN 804@itemx LONG_LONG_MAX 805@itemx ULONG_LONG_MAX 806@standards{GNU, limits.h} 807These are obsolete names for @code{LLONG_MIN}, @code{LLONG_MAX}, and 808@code{ULLONG_MAX}. They are only available if @code{_GNU_SOURCE} is 809defined (@pxref{Feature Test Macros}). In GCC versions prior to 3.0, 810these were the only names available. 811 812@item WCHAR_MAX 813@standards{GNU, limits.h} 814 815This is the maximum value that can be represented by a @code{wchar_t}. 816@xref{Extended Char Intro}. 817@end vtable 818 819The header file @file{limits.h} also defines some additional constants 820that parameterize various operating system and file system limits. These 821constants are described in @ref{System Configuration}. 822 823@node Floating Type Macros 824@subsection Floating Type Macros 825@cindex floating type measurements 826@cindex measurements of floating types 827@cindex type measurements, floating 828@cindex limits, floating types 829 830The specific representation of floating point numbers varies from 831machine to machine. Because floating point numbers are represented 832internally as approximate quantities, algorithms for manipulating 833floating point data often need to take account of the precise details of 834the machine's floating point representation. 835 836Some of the functions in the C library itself need this information; for 837example, the algorithms for printing and reading floating point numbers 838(@pxref{I/O on Streams}) and for calculating trigonometric and 839irrational functions (@pxref{Mathematics}) use it to avoid round-off 840error and loss of accuracy. User programs that implement numerical 841analysis techniques also often need this information in order to 842minimize or compute error bounds. 843 844The header file @file{float.h} describes the format used by your 845machine. 846 847@menu 848* Floating Point Concepts:: Definitions of terminology. 849* Floating Point Parameters:: Details of specific macros. 850* IEEE Floating Point:: The measurements for one common 851 representation. 852@end menu 853 854@node Floating Point Concepts 855@subsubsection Floating Point Representation Concepts 856 857This section introduces the terminology for describing floating point 858representations. 859 860You are probably already familiar with most of these concepts in terms 861of scientific or exponential notation for floating point numbers. For 862example, the number @code{123456.0} could be expressed in exponential 863notation as @code{1.23456e+05}, a shorthand notation indicating that the 864mantissa @code{1.23456} is multiplied by the base @code{10} raised to 865power @code{5}. 866 867More formally, the internal representation of a floating point number 868can be characterized in terms of the following parameters: 869 870@itemize @bullet 871@item 872@cindex sign (of floating point number) 873The @dfn{sign} is either @code{-1} or @code{1}. 874 875@item 876@cindex base (of floating point number) 877@cindex radix (of floating point number) 878The @dfn{base} or @dfn{radix} for exponentiation, an integer greater 879than @code{1}. This is a constant for a particular representation. 880 881@item 882@cindex exponent (of floating point number) 883The @dfn{exponent} to which the base is raised. The upper and lower 884bounds of the exponent value are constants for a particular 885representation. 886 887@cindex bias (of floating point number exponent) 888Sometimes, in the actual bits representing the floating point number, 889the exponent is @dfn{biased} by adding a constant to it, to make it 890always be represented as an unsigned quantity. This is only important 891if you have some reason to pick apart the bit fields making up the 892floating point number by hand, which is something for which @theglibc{} 893provides no support. So this is ignored in the discussion that 894follows. 895 896@item 897@cindex mantissa (of floating point number) 898@cindex significand (of floating point number) 899The @dfn{mantissa} or @dfn{significand} is an unsigned integer which is a 900part of each floating point number. 901 902@item 903@cindex precision (of floating point number) 904The @dfn{precision} of the mantissa. If the base of the representation 905is @var{b}, then the precision is the number of base-@var{b} digits in 906the mantissa. This is a constant for a particular representation. 907 908@cindex hidden bit (of floating point number mantissa) 909Many floating point representations have an implicit @dfn{hidden bit} in 910the mantissa. This is a bit which is present virtually in the mantissa, 911but not stored in memory because its value is always 1 in a normalized 912number. The precision figure (see above) includes any hidden bits. 913 914Again, @theglibc{} provides no facilities for dealing with such 915low-level aspects of the representation. 916@end itemize 917 918The mantissa of a floating point number represents an implicit fraction 919whose denominator is the base raised to the power of the precision. Since 920the largest representable mantissa is one less than this denominator, the 921value of the fraction is always strictly less than @code{1}. The 922mathematical value of a floating point number is then the product of this 923fraction, the sign, and the base raised to the exponent. 924 925@cindex normalized floating point number 926We say that the floating point number is @dfn{normalized} if the 927fraction is at least @code{1/@var{b}}, where @var{b} is the base. In 928other words, the mantissa would be too large to fit if it were 929multiplied by the base. Non-normalized numbers are sometimes called 930@dfn{denormal}; they contain less precision than the representation 931normally can hold. 932 933If the number is not normalized, then you can subtract @code{1} from the 934exponent while multiplying the mantissa by the base, and get another 935floating point number with the same value. @dfn{Normalization} consists 936of doing this repeatedly until the number is normalized. Two distinct 937normalized floating point numbers cannot be equal in value. 938 939(There is an exception to this rule: if the mantissa is zero, it is 940considered normalized. Another exception happens on certain machines 941where the exponent is as small as the representation can hold. Then 942it is impossible to subtract @code{1} from the exponent, so a number 943may be normalized even if its fraction is less than @code{1/@var{b}}.) 944 945@node Floating Point Parameters 946@subsubsection Floating Point Parameters 947 948@pindex float.h 949These macro definitions can be accessed by including the header file 950@file{float.h} in your program. 951 952Macro names starting with @samp{FLT_} refer to the @code{float} type, 953while names beginning with @samp{DBL_} refer to the @code{double} type 954and names beginning with @samp{LDBL_} refer to the @code{long double} 955type. (If GCC does not support @code{long double} as a distinct data 956type on a target machine then the values for the @samp{LDBL_} constants 957are equal to the corresponding constants for the @code{double} type.) 958 959Of these macros, only @code{FLT_RADIX} is guaranteed to be a constant 960expression. The other macros listed here cannot be reliably used in 961places that require constant expressions, such as @samp{#if} 962preprocessing directives or in the dimensions of static arrays. 963 964Although the @w{ISO C} standard specifies minimum and maximum values for 965most of these parameters, the GNU C implementation uses whatever values 966describe the floating point representation of the target machine. So in 967principle GNU C actually satisfies the @w{ISO C} requirements only if the 968target machine is suitable. In practice, all the machines currently 969supported are suitable. 970 971@vtable @code 972@item FLT_ROUNDS 973@standards{C90, float.h} 974This value characterizes the rounding mode for floating point addition. 975The following values indicate standard rounding modes: 976 977@need 750 978 979@table @code 980@item -1 981The mode is indeterminable. 982@item 0 983Rounding is towards zero. 984@item 1 985Rounding is to the nearest number. 986@item 2 987Rounding is towards positive infinity. 988@item 3 989Rounding is towards negative infinity. 990@end table 991 992@noindent 993Any other value represents a machine-dependent nonstandard rounding 994mode. 995 996On most machines, the value is @code{1}, in accordance with the IEEE 997standard for floating point. 998 999Here is a table showing how certain values round for each possible value 1000of @code{FLT_ROUNDS}, if the other aspects of the representation match 1001the IEEE single-precision standard. 1002 1003@smallexample 1004 0 1 2 3 1005 1.00000003 1.0 1.0 1.00000012 1.0 1006 1.00000007 1.0 1.00000012 1.00000012 1.0 1007-1.00000003 -1.0 -1.0 -1.0 -1.00000012 1008-1.00000007 -1.0 -1.00000012 -1.0 -1.00000012 1009@end smallexample 1010 1011@item FLT_RADIX 1012@standards{C90, float.h} 1013This is the value of the base, or radix, of the exponent representation. 1014This is guaranteed to be a constant expression, unlike the other macros 1015described in this section. The value is 2 on all machines we know of 1016except the IBM 360 and derivatives. 1017 1018@item FLT_MANT_DIG 1019@standards{C90, float.h} 1020This is the number of base-@code{FLT_RADIX} digits in the floating point 1021mantissa for the @code{float} data type. The following expression 1022yields @code{1.0} (even though mathematically it should not) due to the 1023limited number of mantissa digits: 1024 1025@smallexample 1026float radix = FLT_RADIX; 1027 10281.0f + 1.0f / radix / radix / @dots{} / radix 1029@end smallexample 1030 1031@noindent 1032where @code{radix} appears @code{FLT_MANT_DIG} times. 1033 1034@item DBL_MANT_DIG 1035@itemx LDBL_MANT_DIG 1036@standards{C90, float.h} 1037This is the number of base-@code{FLT_RADIX} digits in the floating point 1038mantissa for the data types @code{double} and @code{long double}, 1039respectively. 1040 1041@comment Extra blank lines make it look better. 1042@item FLT_DIG 1043@standards{C90, float.h} 1044 1045This is the number of decimal digits of precision for the @code{float} 1046data type. Technically, if @var{p} and @var{b} are the precision and 1047base (respectively) for the representation, then the decimal precision 1048@var{q} is the maximum number of decimal digits such that any floating 1049point number with @var{q} base 10 digits can be rounded to a floating 1050point number with @var{p} base @var{b} digits and back again, without 1051change to the @var{q} decimal digits. 1052 1053The value of this macro is supposed to be at least @code{6}, to satisfy 1054@w{ISO C}. 1055 1056@item DBL_DIG 1057@itemx LDBL_DIG 1058@standards{C90, float.h} 1059 1060These are similar to @code{FLT_DIG}, but for the data types 1061@code{double} and @code{long double}, respectively. The values of these 1062macros are supposed to be at least @code{10}. 1063 1064@item FLT_MIN_EXP 1065@standards{C90, float.h} 1066This is the smallest possible exponent value for type @code{float}. 1067More precisely, it is the minimum negative integer such that the value 1068@code{FLT_RADIX} raised to this power minus 1 can be represented as a 1069normalized floating point number of type @code{float}. 1070 1071@item DBL_MIN_EXP 1072@itemx LDBL_MIN_EXP 1073@standards{C90, float.h} 1074 1075These are similar to @code{FLT_MIN_EXP}, but for the data types 1076@code{double} and @code{long double}, respectively. 1077 1078@item FLT_MIN_10_EXP 1079@standards{C90, float.h} 1080This is the minimum negative integer such that @code{10} raised to this 1081power minus 1 can be represented as a normalized floating point number 1082of type @code{float}. This is supposed to be @code{-37} or even less. 1083 1084@item DBL_MIN_10_EXP 1085@itemx LDBL_MIN_10_EXP 1086@standards{C90, float.h} 1087These are similar to @code{FLT_MIN_10_EXP}, but for the data types 1088@code{double} and @code{long double}, respectively. 1089 1090@item FLT_MAX_EXP 1091@standards{C90, float.h} 1092This is the largest possible exponent value for type @code{float}. More 1093precisely, this is the maximum positive integer such that value 1094@code{FLT_RADIX} raised to this power minus 1 can be represented as a 1095floating point number of type @code{float}. 1096 1097@item DBL_MAX_EXP 1098@itemx LDBL_MAX_EXP 1099@standards{C90, float.h} 1100These are similar to @code{FLT_MAX_EXP}, but for the data types 1101@code{double} and @code{long double}, respectively. 1102 1103@item FLT_MAX_10_EXP 1104@standards{C90, float.h} 1105This is the maximum positive integer such that @code{10} raised to this 1106power minus 1 can be represented as a normalized floating point number 1107of type @code{float}. This is supposed to be at least @code{37}. 1108 1109@item DBL_MAX_10_EXP 1110@itemx LDBL_MAX_10_EXP 1111@standards{C90, float.h} 1112These are similar to @code{FLT_MAX_10_EXP}, but for the data types 1113@code{double} and @code{long double}, respectively. 1114 1115@item FLT_MAX 1116@standards{C90, float.h} 1117 1118The value of this macro is the maximum number representable in type 1119@code{float}. It is supposed to be at least @code{1E+37}. The value 1120has type @code{float}. 1121 1122The smallest representable number is @code{- FLT_MAX}. 1123 1124@item DBL_MAX 1125@itemx LDBL_MAX 1126@standards{C90, float.h} 1127 1128These are similar to @code{FLT_MAX}, but for the data types 1129@code{double} and @code{long double}, respectively. The type of the 1130macro's value is the same as the type it describes. 1131 1132@item FLT_MIN 1133@standards{C90, float.h} 1134 1135The value of this macro is the minimum normalized positive floating 1136point number that is representable in type @code{float}. It is supposed 1137to be no more than @code{1E-37}. 1138 1139@item DBL_MIN 1140@itemx LDBL_MIN 1141@standards{C90, float.h} 1142 1143These are similar to @code{FLT_MIN}, but for the data types 1144@code{double} and @code{long double}, respectively. The type of the 1145macro's value is the same as the type it describes. 1146 1147@item FLT_EPSILON 1148@standards{C90, float.h} 1149 1150This is the difference between 1 and the smallest floating point 1151number of type @code{float} that is greater than 1. It's supposed to 1152be no greater than @code{1E-5}. 1153 1154@item DBL_EPSILON 1155@itemx LDBL_EPSILON 1156@standards{C90, float.h} 1157 1158These are similar to @code{FLT_EPSILON}, but for the data types 1159@code{double} and @code{long double}, respectively. The type of the 1160macro's value is the same as the type it describes. The values are not 1161supposed to be greater than @code{1E-9}. 1162@end vtable 1163 1164@node IEEE Floating Point 1165@subsubsection IEEE Floating Point 1166@cindex IEEE floating point representation 1167@cindex floating point, IEEE 1168 1169Here is an example showing how the floating type measurements come out 1170for the most common floating point representation, specified by the 1171@cite{IEEE Standard for Binary Floating Point Arithmetic (ANSI/IEEE Std 1172754-1985)}. Nearly all computers designed since the 1980s use this 1173format. 1174 1175The IEEE single-precision float representation uses a base of 2. There 1176is a sign bit, a mantissa with 23 bits plus one hidden bit (so the total 1177precision is 24 base-2 digits), and an 8-bit exponent that can represent 1178values in the range -125 to 128, inclusive. 1179 1180So, for an implementation that uses this representation for the 1181@code{float} data type, appropriate values for the corresponding 1182parameters are: 1183 1184@smallexample 1185FLT_RADIX 2 1186FLT_MANT_DIG 24 1187FLT_DIG 6 1188FLT_MIN_EXP -125 1189FLT_MIN_10_EXP -37 1190FLT_MAX_EXP 128 1191FLT_MAX_10_EXP +38 1192FLT_MIN 1.17549435E-38F 1193FLT_MAX 3.40282347E+38F 1194FLT_EPSILON 1.19209290E-07F 1195@end smallexample 1196 1197Here are the values for the @code{double} data type: 1198 1199@smallexample 1200DBL_MANT_DIG 53 1201DBL_DIG 15 1202DBL_MIN_EXP -1021 1203DBL_MIN_10_EXP -307 1204DBL_MAX_EXP 1024 1205DBL_MAX_10_EXP 308 1206DBL_MAX 1.7976931348623157E+308 1207DBL_MIN 2.2250738585072014E-308 1208DBL_EPSILON 2.2204460492503131E-016 1209@end smallexample 1210 1211@node Structure Measurement 1212@subsection Structure Field Offset Measurement 1213 1214You can use @code{offsetof} to measure the location within a structure 1215type of a particular structure member. 1216 1217@deftypefn {Macro} size_t offsetof (@var{type}, @var{member}) 1218@standards{ISO, stddef.h} 1219@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} 1220@c This is no longer provided by glibc, but rather by the compiler. 1221This expands to an integer constant expression that is the offset of the 1222structure member named @var{member} in the structure type @var{type}. 1223For example, @code{offsetof (struct s, elem)} is the offset, in bytes, 1224of the member @code{elem} in a @code{struct s}. 1225 1226This macro won't work if @var{member} is a bit field; you get an error 1227from the C compiler in that case. 1228@end deftypefn 1229