Deklaration und Defintion



  • Hi!

    Ich mache gerade ein paar Übungen im Stroustrup durch. Dabei soll zu der Definition

    typedef complex<short> Punkt;
    

    die Deklaration geschrieben werden.

    Meine Überlegung war

    typedef Punkt;
    

    was auch der MSVC7 anstandslos kompilierte. Der DevC++ (der ja den DNJGPP verwendet), gibt allerdings den Fehler

    C++ forbids declaration of `Punkt' with no type
    

    aus.

    Etwas ähnliches passierte bei

    enum Bier { Carlsberg, Tuborg, Thor };
    

    zu

    enum Bier;
    

    Wurde wieder vom MSVC7 kompiliert, der DevC++ gibt hier den Fehler

    use of enum `Bier' without previous declaration
    

    aus.

    Was ist nun richtig?

    menreth



  • typedef Punkt;
    

    ist unfug.

    DevC++ verwendet GCC.

    es ware vll richtig, "Punkt irgendwas;" zu schreiben, wenn du den neuen typen benutzen sollst...



  • menreth schrieb:

    Dabei soll zu der Definition

    typedef complex<short> Punkt;
    

    die Deklaration geschrieben werden.

    Deklaration von was? Variablen? Funktionen? Diese Frage solltest du dir erstmal beantworten. typedef definiert jedenfalls einen neuen Typ, oder besser, ein Alias. Ein neuer Typ ist es nicht wirklich, sondern lediglich ein anderer Bezeichner für einen existierenden Typen. Warum der MSC das kompiliert, liegt wohl daran, dass du eine alte Version benutzt. Ein aktueller MSC gibt folgende Fehlermeldung aus:

    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    

    typedef hat immer folgende Syntax:

    typedef existierender_typ neuer_typ_alias;
    


  • OK, dachte mir schon das die Trennung zwischen Deklaration und Definition bei typedef nicht wirklich existent ist. Thx!

    Das mit den Mehrfachposts tut mir sehr leid! Folgendes ist nämlich passiert: Als ich meinen Post abschicken wollte, hing sich der Browser auf. Also neugestartet, nachgeschaut ob der Post abgeschickt wurde(war er nicht), also nochmal (mit anderem Namen; dachte vielleichts liegts daran) probiert, Browser hängts sich wieder auf und Post wurde (anscheinend) nicht abgeschickt. Als ichs später nochmal probiert hab, hats sofort geklappt(zu dieser Zeit wurde auch nur ein Post angezeigt). Wie daraus 5 geworden sind, ist mir allerdings unbegreiflich.


Anmelden zum Antworten