Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 06 Mar 1999 11:00:05 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        Nate Williams <nate@mt.sri.com>
Cc:        current@FreeBSD.ORG
Subject:   Re: callout changes nit
Message-ID:  <XFMail.990306110005.jdp@polstra.com>
In-Reply-To: <199903061736.KAA24445@mt.sri.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Nate Williams wrote:
>> > +void
>> > +callout_init(c)
>> > +       struct  callout *c;
>> > +{
>> > +       bzero(c, sizeof c);
>> >  }
>> > 
>> > That doesn't look correct, does it?
>> 
>> Agreed.  I think it should be "sizeof *c".
> 
> Ahh, I see.  I think it should say
> 
>        bzero(c, sizeof(struct callout));
> 
> To avoid the compiler using the size of the pointers et. al.

This is largely a matter of taste, so we don't need to agree on it. :-)
But I do have a specific reason for preferring the "sizeof *c"
form.  Namely, it reduces redundancy.  The advantage is best seen if
you consider making a macro for clearing a structure.  Here are two
possibilities:

    #define CLEAR_STRUCT(ptr)           bzero((ptr), sizeof *(ptr))
    #define CLEAR_STRUCT(ptr, type)     bzero((ptr), sizeof(type))

In this context, the 1-parameter form is indisputably less
error-prone.  Of course, the context of the original example was
different.  So I'm satisfied to say we are both "right".

John
---
  John Polstra                                               jdp@polstra.com
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "Nobody ever went broke underestimating the taste of the American public."
                                                            -- H. L. Mencken


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.990306110005.jdp>