diff --git a/in-tree.txt b/sizeof.7 --- a/in-tree.txt +++ b/sizeof.7 @@ -34,38 +34,30 @@ .br .Nm Vt expression .Sh DESCRIPTION -The -.Nm -operator yields the size of its operand. -The -.Nm -operator cannot be applied to incomplete types and expressions -with incomplete types (e.g. -.Vt void , -or forward-defined -.Vt struct foo ), -and function types. -.Pp -The size of primitive (non-derived) data types in C may differ -across hardware platforms and implementations. -They are defined by corresponding Application Binary Interface (ABI) -specifications, see -.Xr arch 7 -for details about ABI used by -.Fx . -It may be necessary or useful for a program to be able -to determine the storage size of a data type or object -to account for the platform specifics. -.Pp The unary .Nm operator yields the storage size of an expression or -data type in -.Em char sized units -(C language bytes). +data type in bytes. +.Sh DETAILS +The size of data types in C (such as e.g., integers or +pointers) may differ across hardware platforms and +implementations. +For example, systems on which integers, longs, and +pointers are using 32 bits (e.g., i386) are referred +to as using the "ILP32" data model, systems using +64 bit longs and pointers (e.g., amd64 / x86_64) +as the "LP64" data model. +.Pp +As it may be necessary or useful for a program to be able +to determine the storage size of a data type or +object, +.Nm +yields that size in +.Em char sized units . As a result, -.Ql sizeof(char) -is always guaranteed to be 1. +.Pf ' Vt sizeof(char) Ns ' +is always guaranteed to be +1. (The number of bits per .Vt char is given by the @@ -79,13 +71,6 @@ .In sys/param.h header.) .Sh EXAMPLES -Different platforms may use different data models. -For example, systems on which integers, longs, and -pointers are using 32 bits (e.g., i386) are referred -to as using the "ILP32" data model, systems using -64 bit longs and pointers (e.g., amd64 / x86_64) -as the "LP64" data model. -.Pp The following examples illustrate the possible results of calling .Nm @@ -93,7 +78,8 @@ .Pp When applied to a simple variable or data type, .Nm -returns the storage size of the data type of the object: +returns the storage size of the data type of the +object: .Bl -column -offset indent \ ".Li sizeof(struct flex)" ".Sy Result (ILP32)" ".Sy Result (LP64)" .It Sy Object or type \ @@ -271,9 +257,9 @@ .Ed .Pp In that case, the operator will return the storage -size of the pointer ( -.Ql sizeof(char *) -), not the +size of the pointer +.Pf (' Vt sizeof(char *) Ns '), +not the allocated memory. .Pp .Nm @@ -291,6 +277,11 @@ preprocessor, the .Nm operator cannot be used in a preprocessor expression. +.Pp +The +.Nm +operator cannot be used on a bit-field object, a +function type, or an incomplete type. .Sh SEE ALSO .Xr arch 7 , .Xr operator 7