Deutsch   English   Français   Italiano  
<v63t7d$28fl8$4@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: James Kuyper <jameskuyper@alumni.caltech.edu>
Newsgroups: comp.std.c
Subject: Re: May a string span multiple, independent objects?
Date: Wed, 3 Jul 2024 12:11:25 -0400
Organization: A noiseless patient Spider
Lines: 26
Message-ID: <v63t7d$28fl8$4@dont-email.me>
References: <20240703141500$00ed@vinc17.org> <lel8ndF7f8iU1@mid.dfncis.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 03 Jul 2024 18:11:25 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="d7676d8b49e8d1fc9338a815d9368d40";
	logging-data="2375336"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+NC7Wtwv3pl/TuYgzxOTVgFNVv/N/3ZLY="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:grw0h/5R+2lm0UQA95WthKhSXcc=
Content-Language: en-US
In-Reply-To: <lel8ndF7f8iU1@mid.dfncis.de>
Bytes: 2350

On 7/3/24 11:23, Hans-Bernhard Bröker wrote:
> Am 03.07.2024 um 16:31 schrieb Vincent Lefevre:
>> ISO C17 (and C23 draft) 7.1.1 defines a string as follows: "A string
>> is a contiguous sequence of characters terminated by and including
>> the first null character."
>>
>> But may a string span multiple, independent objects that happens
>> to be contiguous in memory?
>>
>> For instance, is the following program valid and what does the ISO C
>> standard say about that?
> 
> Comparing pointers pointing at distinct objects is already invalid (for 
> some interpretation of "invalid")

Comparison of valid pointers that point at distinct objects has
well-defined behavior. Such operations would be pretty useless if that
weren't the case, since they only compare the locations of those objects
- if they were allowed only for objects that are  not distinct, the
locations would necessarily be the same, so, ==, <= and >= would always
return true, and !=, <, and > would always return false.

Furthermore, comparison for equality (as opposed to comparison for
relative order) is permitted even for objects that aren't sub-objects of
the same larger object. The problems with such code involves
incrementing and dereferencing such pointers, not comparing them.