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]

Re: Register group proposal


On 22-Feb-2001, Andrew Cagney wrote:

>Have a look at ui-out.h, ui-file.h, gdbarch.h, ...  They have all used
>``struct foo *'' to implement an opaque type.  In all cases it isn't
>possible to get to the inner workings.

I've noticed, and I've spent time scratching my head over why structs are
used in various places.

>Regarding typedefs.  Per my e-mail
>http://sources.redhat.com/ml/gdb-patches/2001-02/msg00325.html it
>encouraging a tangled web of includes.

The example you quoted in that email:

   Try declaring something like:

       xyz.h:
           struct xyz;
           exter void xyz_foo (struct xyz *self, ...);

       abc.h:
           struct xyz;
           struct abc;
           extern abc_on_xyz (struct abc *self, struct xyz *on);

   using typedefs.  It ends up creating include spaghetti :-(

is very easy to declare using typedefs.  Here's abc.h:

   #include "xyz.h"

   typedef struct {
     int i;
   } Abc;

   extern int abc_on_xyz (Abc *self, Xyz *on);

Here's xyz.h:

   typedef struct {
     int j;
   } Xyz;

   extern void xyz_foo (Xyz *self);

Do we have an official policy prohibiting typedefs in include files?

Nick


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