Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: bart Newsgroups: comp.lang.c Subject: Re: do { quit; } else { } Date: Fri, 11 Apr 2025 20:46:39 +0100 Organization: A noiseless patient Spider Lines: 29 Message-ID: References: <20250407210248.00006457@yahoo.com> <868qoaeezc.fsf@linuxsc.com> <86mscqcpy1.fsf@linuxsc.com> <86iknecjz8.fsf@linuxsc.com> <86o6x5at05.fsf@linuxsc.com> <20250409170901.947@kylheku.com> <87wmbs45oa.fsf@nosuchdomain.example.com> <87semf4pw5.fsf@nosuchdomain.example.com> <87zfgn344c.fsf@nosuchdomain.example.com> <20250411142636.00006c00@yahoo.com> <20250411102119.431@kylheku.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Fri, 11 Apr 2025 21:46:40 +0200 (CEST) Injection-Info: dont-email.me; posting-host="dd2082d654358406b52b51744c06eb0c"; logging-data="2565058"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18lQ1l3UMZ0tJIbvVYtCyHz" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:WJX0btBes0JScii46Q9I7iQcZdI= Content-Language: en-GB In-Reply-To: <20250411102119.431@kylheku.com> Bytes: 2834 On 11/04/2025 18:22, Kaz Kylheku wrote: > On 2025-04-11, Michael S wrote: >> On Thu, 10 Apr 2025 17:59:15 -0700 >> Keith Thompson wrote: >> >>> >>> An understanding of what "compatible types" means. >> >> Bart didn't say that types are compatible or non-compatible. >> He said that they are 'compatible enough'. That is not terminology of C >> Standard, but terminology of his own. And he seems to understand it. >> >> In my own translation, 'compatible enough' means that when these structs >> are accessed then any sane or even semi-sane compiler will generate code >> that will have the same effect as in case of access through structures >> with literally identical declarations. > > so struct { long x; } and struct { int x; } are compatible enough, > in situations that are portable enough. What about struct {long x;} and struct {int64_t x;}? Whether they are compatible seems to be depend on platform. Or rather, whether or not int64_t happens to defined on top of 'long' or 'long long'.