From -3125732172698766271
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f78e5,e94695845965b249
X-Google-Attributes: gidf78e5,public
X-Google-ArrivalTime: 1992-12-11 19:59:16 PST
Newsgroups: comp.std.c++
Path: sparky!uunet!microsoft!hexnut!jimad
From: jimad@microsoft.com (Jim Adcock)
Subject: Re: Zero-length structures and pointer comparisons
Message-ID: <1992Dec11.233039.12249@microsoft.com>
Date: 11 Dec 92 23:30:39 GMT
Organization: Microsoft Corporation
References: <1992Dec8.103218.27689@lth.se> <9234423.15066@mulga.cs.mu.OZ.AU> <KANZE.92Dec10174617@slsvdnt.us-es.sel.de>
Lines: 17

In article <KANZE.92Dec10174617@slsvdnt.us-es.sel.de> kanze@us-es.sel.de (James Kanze) writes:
|We already *have* this function.  Try the following:
|
|	void*	ptr1 ;
|	void*	ptr2 ;
|	int	cmp = memcmp( &ptr1 , &ptr2 , sizeof( void* ) ) ;
|
|This works on all implementations I can think of.  Is it guaranteed?
|(Ie: can pointers also hold undefined padding information which may
|vary in a random fashion.  Note that "memcmp" is *not* guaranteed to
|work on struct's.)

Not guaranteed, nor does there have to be random padding for it to not
be guaranteed.  All the bits could be used, but there could be multiple
bit combinations mapping to the same underlying memory address.  Early
PCs and OSs being an example.



