initialization of XXX_COOKIE in C source files

Matthew Knepley knepley at gmail.com
Sun May 11 07:07:56 CDT 2008


On Sat, May 10, 2008 at 7:49 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>  On May 10, 2008, at 6:08 PM, Lisandro Dalcin wrote:
>
>
> > I've noticed that in 2.3.3 all PETSc cookies are initialized to zero
> > in sources, but in DEV they are not initialized. What's the reason of
> >
>                                                  ^^^^^^^^^^^^^^^^
>                                     You are quick, I just pushed the change
> last night.
>
>     The reason why they where all initialized to zero was because
>  - a very long time ago all the cookies where hardwired numbers that we
>    chose for each new class
>  - then we added the ability to request a cookie, but still support the old
>   hardwired version. Passing in a pointer to a zero value meant you were
>   requesting one, passing in a pointer to a nonzero one meant that the
> cookie
>   had a hardwired value.
>  - over time all the hardwired ones were unhardwired, but the convention
>   of initializing them to zero before hand was never changed.
>
>   There was some convoluted logic for why the PetscEvent values were
>  all initialized to zero also. When fixing up the events I also fixed the
> cookies
>  The reason is Barry's rule # 54, "nothing should be done in a code without
>  a reason, otherwise it will be confusing to others looking at the code."
> For example,
>  even now, whenever anybody made some new events they initialized them
>  to zero, why? Not because they need to be, but simply because they were in
>  code the developer copied from.
>
>   Were you taking advantage of their initialization to zero? If so, rather
> than depending
>  on each cookie being initialized to zero I would suggest handling this type
>  of "check if initialized" stuff at a package by package level or library by
> library level.
>  Please let me know what you need.

Now I am a little worried. Don't some compilers dislike unintialized, file scope
variables in shared libraries (I am thinking AIX).

  Matt

>   Barry
>
>
>
>
> >
> > this change?
> >
> > --
> >
> > Lisandro Dalcín
> > ---------------
> > Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> > Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> > Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> > PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> > Tel/Fax: +54-(0)342-451.1594
> >
> >
>
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which
their experiments lead.
-- Norbert Wiener




More information about the petsc-dev mailing list