Mailinglist Archive: opensuse-programming-de (171 mails)

< Previous Next >
Re: String -> UNIX-Time
  • From: Ralf Corsepius <corsepiu@xxxxxxxxxxxxxx>
  • Date: 27 Jan 2003 14:30:26 +0100
  • Message-id: <1043674226.23103.89.camel@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
On Mon, 2003-01-27 at 13:12, Sebastian Huber wrote:
> On Monday 27 January 2003 08:23 am, you wrote:
> > On Mon, 2003-01-27 at 07:53, Sebastian Huber wrote:
> > > On Monday 27 January 2003 01:30, Philipp Thomas wrote:

> > > >
> > > > typedef struct mystruct_
> > > > {
> > > > int i;
> > > > int d;
> > > > } mystruct;
> > >
> > > Hi,
> > > also davon kann ich nur abraten, das bringt nur das gute Doxygen dazu
> > > Doku fuer 'mystruct_' und 'mystruct' zu erzeugen.
> >
> > Warum auch nicht?
> >
> > "struct mystruct_" und "typedef mystruct" sind zwei verschiedene Dinge.
>
> Ja, klar. Aber wozu braucht man 'struct mystruct_', wenn man den typedef hat?

z.B. zum Bauen von rekursiven Datenstrukturen (Listen u.ä.):

typedef struct _mystruct {
struct _mystruct *next;
[..]
} mystruct ;

[Schau Dir mal die Header der Xt/Xaw/Xm usw. Widgets
(/usr/include/X11/[Xt|Xaw|Xm]/*P.h] an, sie arbeiten extensiv mit dieser
Konstruktion]

z.B. aus Portabilitätsgründen: Manche (Sehr alte) C-Compiler akzeptieren
typedef struct { } mystruct
nicht.

z.B. zur Datenkapselung/Opaquisierung

Public Header:
typedef struct _mystruct mystruct;
extern mystruct *mystruct_var;

Private Header:
include <public-header.h>

struct _mystruct {
[..]
};

[Die Xt/Xaw/Xm Widgets z.B. arbeiten extensiv damit (*.h (public Header)
vs *P.h (private Header) ).]

z.B. aus Stilgründen/Code-Lesbarkeitsgründen in C++, da ein "struct
_mystruct" eindeutig ist, ein "_mystruct" aber nicht unbedingt:

typedef struct _mystruct {
int a;
} mystruct ;

extern struct _mystruct m1;
extern _mystruct m2;
extern mystruct m3;

Stell Dir vor Du findest an Zeile 2435 in einer C++-Quelle
_mystruct mystruct; oder mystruct mystruct;

Ein struct _mystruct mystruct wäre sofort verständlich.

[In C++ wäre es sinnvoller stattdessen nur "struct mystruct{}" zu
verwenden und den typedef ganz zu vermeiden.]

Ralf



< Previous Next >