974 Stimmen

Unterschied zwischen "struct" und "typedef struct" in C++?

Unter C++ gibt es einen Unterschied zwischen:

struct Foo { ... };

und:

typedef struct { ... } Foo;

0 Stimmen

2 Stimmen

3voto

user2796283 Punkte 253

Ein wichtiger Unterschied zwischen einem "typedef struct" und einem "struct" in C++ ist, dass die Inline-Initialisierung von Mitgliedern in "typedef structs" nicht funktioniert.

// the 'x' in this struct will NOT be initialised to zero
typedef struct { int x = 0; } Foo;

// the 'x' in this struct WILL be initialised to zero
struct Foo { int x = 0; };

4 Stimmen

Das stimmt nicht. In beiden Fällen x initialisiert wird. Siehe Test in der Online-IDE von Coliru (Ich habe ihn auf 42 initialisiert, damit es offensichtlicher ist als bei Null, dass die Zuweisung wirklich stattgefunden hat).

1 Stimmen

Tatsächlich habe ich es in Visual Studio 2013 getestet und es wurde nicht initialisiert. Das war ein Problem, auf das wir im Produktionscode gestoßen sind. Alle Compiler sind unterschiedlich und müssen nur bestimmte Kriterien erfüllen.

-3voto

xian Punkte 4537

Es gibt keinen Unterschied in C++, aber ich glaube, in C würde es Ihnen erlauben, Instanzen der Struktur Foo zu deklarieren, ohne dies explizit zu tun:

struct Foo bar;

5 Stimmen

Sehen Sie sich die Antwort von @dirkgently an - dort es einen Unterschied, aber er ist subtil.

-6voto

David Tu Punkte 9

Struct ist die Erstellung eines Datentyps. Der Typedef dient dazu, einen Spitznamen für einen Datentyp festzulegen.

21 Stimmen

Sie haben die Frage nicht verstanden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X