Date: Tue, 20 Dec 2022 02:15:33 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 268310] add sizeof(7) man page Message-ID: <bug-268310-227-ipiDxTCkSV@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-268310-227@https.bugs.freebsd.org/bugzilla/> References: <bug-268310-227@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D268310 --- Comment #7 from jschauma@netmeister.org --- Here you go: --- in-tree.txt 2022-12-19 21:13:16.000000000 -0500 +++ sizeof.7 2022-12-19 21:14:16.000000000 -0500 @@ -1,6 +1,5 @@ .\" .\" Copyright (C) 2022 Jan Schaumann <jschauma@netmeister.org>. -.\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -35,17 +34,30 @@ .br .Nm Vt expression .Sh DESCRIPTION -The size of primitive data types in C may differ -across hardware platforms and implementations. -It may be necessary or useful for a program to be able -to determine the storage size of a data type or object. -.Pp The unary .Nm operator yields the storage size of an expression or -data type in +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, 'sizeof(char)' is always guaranteed to be 1. +As a result, +.Pf ' Vt sizeof(char) Ns ' +is always guaranteed to be +1. (The number of bits per .Vt char is given by the @@ -59,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 @@ -129,7 +134,7 @@ .Pp When applied to a struct or union, .Nm -returns the total number of units in the object, +returns the total number of bytes in the object, including any internal or trailing padding used to align the object in memory. This result may thus be larger than if the storage @@ -229,7 +234,7 @@ Many systems provide this shortcut as the macro .Dv ntimes() via the -.In sys/param.h +.Dv sys/param.h header file. .Sh RESULT The result of the @@ -252,8 +257,10 @@ .Ed .Pp In that case, the operator will return the storage -size of the pointer ('sizeof(char *)'), not the -allocated memory! +size of the pointer +.Pf (' Vt sizeof(char *) Ns '), +not the +allocated memory. .Pp .Nm determines the @@ -270,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 --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-268310-227-ipiDxTCkSV>