This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: naive GDB programming style questions


1) It seems to me that some parts of GDB's source use NULL while other
   parts use 0.  Is one or the other of these generally preferred?

2) Am I correct in observing that GDB frowns on code like the
   following:

     char *p = calculate_p ();

     if (!p)
       p_is_zero ();
I'll assume that you ment ``p_is_null()''.

   preferring this instead?

     char *p = calculate_p ();

     if (p == NULL)
       p_is_zero ();

   Does it matter that p in a pointer rather than an integer, or that
   the code is testing for zeroness rather than nonzeroness?
If you've a copy of the ISO C and C++ manuals, have a look at what they have to say about ``NULL'' pointers. It's weird.

Anyway, for GDB, ``p == NULL'' is recommended to make it clear that the pointer is being tested and not the underlying value.

3) Is it possible to get CC Mode to indent in the way that GDB seems
   to prefer?  I'm having a hard time getting structs to be indented
   as follows:

     struct foo
       {
         int mem;
       };
Just use:

struct foo
{
int mem;
};

which is what is output by gdb_indent.sh and emacs. The strange indentation that you've encountered dates back to an earlier version of indent.

Must get around to sending the FSF coding standards group a patch that documents this (it was agreed to in principle some time ago).

   without screwing up my preferred indentation when doing non-GDB
   programming, namely

     struct foo {
       int mem;
     };

   Of course, I can write functions to toggle between the two; but
   given that both styles seem to be able to coexist for enums, maybe
   it's possible to get them to coexist for enums.  (I'm certainly no
   CC Mode expert...)
Andrew



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]