Einzelnen Beitrag anzeigen

DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#4

Re: ThemeManager - BCB Compilerprobleme

  Alt 9. Dez 2007, 12:28
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:
Code:
enum MyFirstEnum mfevar;
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.
Moritz
  Mit Zitat antworten Zitat