Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Wed, 15 Jun 2011 21:19:44 -0500 Message-ID: <4DF9683E.79A8@mindspring.com> Date: Wed, 15 Jun 2011 22:19:42 -0400 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: Reference counting References: <4deb6008$0$28457$703f8584@textnews.kpn.nl> <65a066fe-3455-4bae-90ef-d966d5d3f513@h7g2000yqa.googlegroups.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 79 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.154.216.24 X-Trace: sv3-sm80soNL1lfm/JD9qbmZ8zMqURVXbjtYzQvruftrWqIrBh4x9crBTVfs8gsmoxB8F/S9W8xZFe3j2Zi!lVgCP1hOlhrFZHaJaOEbs1ZxGploZ4FPEJWG/YegIJYvU+NlQfBb+0hKpJW0lYbqYCss2tyZ94Pd!Kg1qO0lSBA== X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 4722 Xref: x330-a1.tempe.blueboxinc.net comp.lang.c:6126 Keith Thompson wrote: > > Tim Rentsch writes: > > Keith Thompson writes: > >> Tim Rentsch writes: > >>> Keith Thompson writes: > >>> > >>>> Angel writes: > >>>>> On 2011-06-14, Shao Miller wrote: > >>>>>> For hashing, is the object representation of a 'void *' guaranteed to be > >>>>>> the same any time a 'void *' points to the same object? Is it likely? > >>>>>> (I think so.) :) > >>>>> > >>>>> The standard only says pointers are represented in an > >>>>> implementation-defined manner. But as long as the pointer value doesn't > >>>>> change, I doubt the representation will. On most implementations, a > >>>>> pointer is really just a 32- or 64-bit unsigned number, indicating a > >>>>> certain spot in virtual memory. > >>>> > >>>> Quibble: Pointer representation is unspecified, not > >>>> implementation-defined. [snip] > >>> > >>> How do you reconcile this assertion with 6.2.6.1p2? Certainly > >>> it looks like the representation of any pointer value stored in > >>> an object would be (at least) implementation-defined. > >> > >> Quite easily: by failing to read it carefully enough. 8-)} > >> > >> But now that I have, I'm confused. Here's what it says: > >> > >> 1 The representations of all types are unspecified except as > >> stated in this subclause. > >> > >> 2 Except for bit-fields, objects are composed of contiguous > >> sequences of one or more bytes, the number, order, and > >> encoding of which are either explicitly specified or > >> implementation-defined. > >> > >> 3 Values stored in unsigned bit-fields and objects of type unsigned > >> char shall be represented using a pure binary notation. > >> > >> As far as I can tell, *all* types have implementation-defined > >> representations; the section says so for non bit-fields and for > >> unsigned bit-fields, and I don't think there's enough wiggle room > >> to say that signed bit-fields have unspecified representations. > >> > >> So why does paragraph 1 say "unspecified" rather than > >> "implementation-defined"? [snip] > > > > Here's a possible idea: maybe paragraph 1 is talking about > > representations generally (including, eg, registers), but > > paragraph 2 is talking about representations specifically > > only in objects. So values of a type can be represented > > outside of being stored in an object, but what those > > representations might be is all "under the hood", with no > > documentation required. What do you think? Does that make > > sense? > > My impression is that the idea of representation applies only to > objects. The representation of a value not stored in an object is > irrelevant until and unless it's stored in an object. > > I think your idea makes some sense, but I don't think it's what > 6.2.6.1 is referring to. > > I have no particular support for this. Do you think that the value of (-1 & 3) corresponds to the way that an implementation represents negative integers? Constants have object types. In C89, the standard talks about the representation of object types. There's no mention of "object representation" in C89. I think it was better that way. -- pete