nichtdeklarierter Bezeichner



  • Hallo Leute,

    stehe noch am Anfang der Programmierung in C!

    Benutze dazu Microsoft Visual Studio 2010 Professional. Hier wäre mein C-Code:

    #include <stdio.h>
    #include <math.h>

    main()
    {

    printf("\n\tDreieck");

    double Seitea, Seiteb, Seitec, Flaeche, Umfang;
    printf("\nBitte Seiten A, B eingeben");
    scanf("%lf %lf", &Seitea,&Seiteb);
    Flaeche = (Seitea * Seiteb)/2.0;
    Seitec = sqrt((Seitea * Seitea) + (Seiteb * Seiteb));
    Umfang = Seitea + Seiteb + Seitec;
    printf("\nLaenge = %.2lf", Seitea);
    printf("\nBreite = %.2lf", Seiteb);
    printf("\nSeitec = %.2lf", Seitec);
    printf("\nFlaeche = %.2lf", Flaeche);
    printf("\nUmfang = %.2lf", Umfang);

    }

    Leider schaffe ich nicht den Code zu komplimieren, folgende Fehlermeldungen erscheinen:

    error C2065: 'Umfang': nichtdeklarierter Bezeichner
    error C2065: 'Flaeche': nichtdeklarierter Bezeichner

    und so weiter eigentlich alle Variablen die ich mit double deklariert habe.

    Verstehe nicht ganz was das zu bedeuten hat, der Code funktioniert mit Code::Blocks einwandfrei nur unter Visual Studio nicht, hoffe Ihr könnt mir helfen!



  • MSVC unterstützt nur C89, und dort sind Variablendefinitionen nur direkt am Beginn eines Codeblocks "{}" möglich.
    Code::Blocks benutzt meist den gcc-Compiler, und der arbeitet in seinem Standardmodus mit einem erweiterten C99-Modus, wo Variablendefinitionen auch mitten im Code möglich sind.
    Der C89-konforme printf-Formatspezifizierer für double ist %f und nicht wie bei dir %lf.



  • Danke für die schnelle Hilfe!

    Jetzt hätte ich noch ne Frage, wenn ich jetzt nach dem Komplimieren auf Play gehe öffnet sich die MS-Dos-Box und ich kann laut Programmcode die Seite A und Seite B eingeben.

    Danach schließt sie sich wieder und der Rest des Programmcodes wird nicht abgearbeitet bzw. ausgegeben (also Flaeche, Umfang und so weiter).

    Wieso das so ist, kann ich mir iwie nicht erklären?



  • Weil du ein Konsolenprogramm geschrieben hast, welches sinnigerweise für den Aufruf in der Konsole (DOS-Box) gedacht ist und nicht für den Aufruf aus einer GUI (Windows/VisualSudio).
    Das DOS-Fenster schließt sich somit sofort nach Programmende, es weiß ja nicht, dass du die Ausgaben nicht so schnell lesen kannst, wie das Programm schließt.
    Verwende für den Aufruf deines Programms aus VStudio heraus Strg+F5 und nicht nur F5. (in CB übrigens analog F9)


Log in to reply