Deutsch   English   Français   Italiano  
<20241001134139.619@kylheku.com>

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

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Kaz Kylheku <643-408-1753@kylheku.com>
Newsgroups: comp.lang.c
Subject: Re: Code guidelines
Date: Tue, 1 Oct 2024 21:39:21 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 36
Message-ID: <20241001134139.619@kylheku.com>
References: <vb6v1t$3b5mb$1@dont-email.me> <vb726n$3b4rq$1@dont-email.me>
 <vb736j$3b5mb$2@dont-email.me> <vb75g9$3bntp$1@dont-email.me>
 <vb77tn$3bu07$3@dont-email.me> <vb7d6l$3d5mv$1@dont-email.me>
 <vdgjkc$2mhpi$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 01 Oct 2024 23:39:22 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="522f7606726274378d45f3c566bfa2c1";
	logging-data="3050697"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+Rh/Ckub8ksNmDJVILvjn+SKFhU1h4lZU="
User-Agent: slrn/pre1.0.4-9 (Linux)
Cancel-Lock: sha1:osFrqtjf38Cc4A7R4mRNUyJwAYc=
Bytes: 2180

On 2024-10-01, Vir Campestris <vir.campestris@invalid.invalid> wrote:
> On 03/09/2024 17:23, Thiago Adams wrote:
><snip>
>> but...maybe, is better to be a little redundant here?
>> I think I prefer to leave "obj->member1->member2 && " even if I know
>> it should not be null.
>> 
>> if (obj->member1 &&
>>      obj->member1->member2 &&
>>      obj->member1->member2->member3)
>> {
>> 
>> }
>
> I think I'd prefer to _omit_ the check that obj->member1->member2 isn't 
> null.
>
> If the code is running correctly that check will never trigger, and is 
> redundant, and will slow things slightly.

How about:

  #define vassert(x) (assert(x), 1)

  if (obj->member1 &&
      vassert(obj->member1->member2) &&
      obj->member1->member2->member3)

If NDEBUG is defined, that just reduces to 1, and is optimized
away. If NDEBUG is absent, the null pointer crash is replaced
by an assertion failure.

-- 
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca