Zitat von
messie:
Wer erklärt mir, wie D6 und BCB6 das verarbeiten und wo es klemmt?
Tu ich doch gerne
Grundsätzlich deklariert man in C++ ein enum wie auch andere Typen:
Code:
enum MyFirstEnum
{
mfeRed = 1,
mfeGreen,
mfeBlue,
};
Dies entspräche in Delphi dem folgenden Konstrukt:
Delphi-Quellcode:
type
MyFirstEnum = (
mfeRed,
mfeGreen,
mfeBlue,
);
Auch die folgenden Zeilen haben so ziemlich die gleiche Bedeutung:
Code:
typedef enum MyFirstEnum AnotherNameForMyFirstEnum;
Delphi-Quellcode:
type
AnotherNameForMyFirstEnum = MyFirstEnum;
In C allerdings war es notwendig, bei der Verwendung von Typen deren Kategorie anzugeben; so sähe z.B. die Deklaration einer Variable des Typs MyFirstEnum so aus:
Deklariert man ein typedef auf den enum-Typen, so kann man sich die Verwendung der Typkategorie bei der Variablendeklaration sparen. Obgleich dieser Umweg in C++ nicht mehr notwendig ist, so ist es in C-Tradition üblich, für Strukturtypen gleich ein typedef anzugeben. (Die Headerdateien aus dem Windows-
SDK sind ein gutes Beispiel.)
Da dies somit relativ häufig vorkommt, gibt es die Möglichkeit, den Typen selbst innerhalb der typedef-Deklaration zu deklarieren. Aus
Code:
enum MyFirstEnum
{
mfeRed = 1,
mfeGreen,
mfeBlue,
};
typedef enum MyFirstEnum AnotherNameForMyFirstEnum;
würde somit
Code:
typedef enum MyFirstEnum
{
mfeRed = 1,
mfeGreen,
mfeBlue,
} AnotherNameForMyFirstEnum;
Gleiches gilt für struct und union.
Bei deinem Versuch hast du in der typedef-Deklaration den eigentlichen Typ-Alias weggelassen, weshalb der Compiler sich natürlich beschwert.