Date: Wed, 1 Jun 2011 19:25:03 +1000 (EST) From: Bruce Evans <brde@optusnet.com.au> To: Steve Kargl <sgk@troutmask.apl.washington.edu> Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Pawel Jakub Dawidek <pjd@FreeBSD.org>, Ben Laurie <ben@links.org> Subject: Re: svn commit: r222084 - head/contrib/gperf/src Message-ID: <20110601191732.A1211@besplex.bde.org> In-Reply-To: <20110531153254.GA55855@troutmask.apl.washington.edu> References: <201105182106.p4IL6KkE008657@svn.freebsd.org> <20110518211651.GE2273@garage.freebsd.pl> <4DE4FB1D.8090407@links.org> <20110531153254.GA55855@troutmask.apl.washington.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 31 May 2011, Steve Kargl wrote: > On Tue, May 31, 2011 at 03:28:45PM +0100, Ben Laurie wrote: >> On 18/05/2011 22:16, Pawel Jakub Dawidek wrote: >>> On Wed, May 18, 2011 at 09:06:20PM +0000, Ben Laurie wrote: >>>> Author: benl >>>> Date: Wed May 18 21:06:20 2011 >>>> New Revision: 222084 >>>> URL: http://svn.freebsd.org/changeset/base/222084 >>>> >>>> Log: >>>> Fix clang warnings. >>>> >>>> Approved by: philip (mentor) >>> [...] >>>> - fprintf (stderr, " by changing asso_value['%c'] (char #%d) to %d\n", >>>> + fprintf (stderr, " by changing asso_value['%c'] (char #%zd) to %d\n", >>>> *p, p - union_set + 1, asso_values[(unsigned char)(*p)]); >>> >>> Hmm, both 'p' and 'union_set' are 'char *' and %zd is for ssize_t. It is >>> a bit strange that it fixes the warning. >> >> Why? The difference between two pointers is ssize_t, surely? >> > >> From n1256.pdf, > > When two pointers are subtracted, both shall point to elements of > the same array object, or one past the last element of the array > object; the result is the difference of the subscripts of the two > array elements. The size of the result is implementation-defined, > and its type (a signed integer type) is ptrdiff_t defined in the > <stddef.h> header. > > ptrdiff_t is not necessarily that same as ssize_t. ssize_t doesn't even exist in Standard C. It is a POSIX thing, mainly for the (broken for historical reasons) return type of read(2) and similar functions. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110601191732.A1211>