Path: csiph.com!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.std.c
Subject: Re: May a string span multiple, independent objects?
Date: Thu, 08 Aug 2024 08:51:26 -0700
Organization: A noiseless patient Spider
Lines: 19
Message-ID: <86v80bgght.fsf@linuxsc.com>
References: <20240703141500$00ed@vinc17.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 08 Aug 2024 17:51:26 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="3394822579de1ea0c2b9a1ce158ed8c5"; logging-data="93807"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+OfUYHrHLeitvJtlnfHCHRhgyiMyThSiQ="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:/ZaqSb5bW43vmrY5PgrRV4zPM98= sha1:Mc2TvcdUmXsVXEMwusK7UTqMo5U=
Xref: csiph.com comp.std.c:6658
Hans-Bernhard Bröker writes:
> Comparing pointers pointing at distinct objects is already invalid
> (for some interpretation of "invalid"), [...].
Using relational operators (<, <=, >, >=) to compare pointers to
distinct objects has defined behavor only if the pointed-to objects
are sub-objects of the same containing object.
Equality operators (==, !=) may be used, with defined behavior,
to compare pointers to any objects, regardless of whether the
pointed-to objects belong to an enclosing containing object.
> Yes, that means the implementation of a function like memmove()
> cannot be fully portable C.
The function memmove() can be defined in fully portable C. It's
just more convenient to write it in a way that takes advantage of
implementation internals.