Banaler Fehler C2143 aber komme nicht weiter



  • Hallo zusammen, 🙂

    ich bin Anfänger was c++ angeht und verwende Microsoft Visual Studio 2010.
    Nun habe ich ein Programm geschrieben, welches auch ein paar Funktionen enthält.

    Will ich das Programm ausführen, erscheint der Fehler " error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' "
    Ich habe etwas recherchiert und erfahren, dass es sich hierbei meist um einen banalen Fehler handelt, wo z.B. nur vergessen wurde eine geschweifte Klammer zu schließen.
    Dies ist jedoch bei mir nicht der Fall (wäre dem so, würde die betroffene Stelle eh rot unterringelt sein, eben wie das für einen Syntaxfehler typisch ist). Auffallend ist, dass dieser Fehler nur bei den Funktionsaufrufen (zwei vom Typ "int", die andere vom Typ "void") erscheint. Deklariert wurden diese Funktionen in einer Header-Datei (diese wird auch im main aufgerufen, andernfalls wären ja wieder zig Stellen rot unterringelt), definiert werden sie in einer extra c++ Datei.

    Ich kann mir leider echt nicht mehr helfen. 😞

    viele Grüße,
    Tobias



  • Wenn du eine Frage hast, solltest du sie stellen.
    Wenn du Hilfe bei deinem Problem willst, solltest du den Code zeigen.



  • Falls es helfen sollte, stelle ich einen Ausschnitt der Deklaration und des Funktionsaufrufs ein (das ganze Programm wäre wahrscheinlich zu umfangreich) :

    ---------Ausschnitt aus Headerdatei---------

    int getCat (int c);
    int getNewState(int old, int cat);
    void outWL(int wla[], int len);

    --------Ausschnitt aus main, wo die Fehler gemeldet werden(siehe Pfeile)--------
    ...
    if (EOFmerker == 1 && c == EOF){
    Zeilenanzahl--; }

    ---> int getCat (c);
    ---> int getNewState (int old, int cat);

    if (Textzustand == 1 && cat == 2) {
    Wortlänge++;
    Wortanzahl++;
    EOFmerker = 0;
    }
    ...
    ...
    printf ("\n\nAnzahl der Zeilen: %d\n", Zeilenanzahl);
    printf ("\nAnzahl der Wörter: %d\n", Wortanzahl);
    ---> void outWL(int wla[], int len);

    return 0;
    }

    Wäre um jeden Tipp sehr dankbar. 🙂

    beste Grüße,
    Tobi



  • Uns sind auch die Hände gebunden solange du uns nicht ein kurzes komplettes Beispiel zeigst, wo der Fehler auftritt.

    Es reicht wahrscheinlich, wenn du das Programm so kürzt das der Fehler nur einmal auftritt. Wenn das geheim bleiben soll, kannst du es ja so umbauen, das du uns trotzdem den Fehler demonstrieren kannst. Musst halt dann für dich wieder anpassen. 😃

    MfG f.-th.



  • Wenn man eine Funktion aufruft, schreibt man weder den Rückgabetyp noch die Parametertypen hin.



  • Tobi R. schrieb:

    ---> int getCat (c);
    ---> int getNewState (int old, int cat);
    ---> void outWL(int wla[], int len);

    Das sind dein Funktionsaufrufe?


  • Mod

    Den richtigen Code posten beachten.

    Meine Recycling-Glaskugel sagt:

    Fehler, die häufig so etwas erzeugen:
    -rekursive #include
    -Funktionsdeklarationen, die eigentlich Variablendefinitionen mit Initialisierung sein sollen



  • Und vor allem können solche Klammer oder Semikolonfehler an ganz anderen Stellen aufgetreten sein, als es die IDE oder der Compiler anzeigt.



  • ohje, das hat man von copy-paste aus der header-Datei.
    Also doch ein banaler Fehler... (schade dass es hier keine smile gibt für *Rotwerden*)
    Das Problem wäre gelöst.
    Ich Danke euch allen 🙂
    Zwar wird beim Aufruf von " outWL(wla[], len); " die geschlossene, eckige Klammer rot unterringelt, aber diesen Fehler werde ich hoffentlich selber lösen können.

    viele Grüße,
    Tobias



  • Du brauchst die Klammern nicht...


Anmelden zum Antworten