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.