DEV c++, nimmt nicht alle C++ Syntaxe an.... ;(



  • Spielgrips schrieb:

    Eins was komisch ist, das er das Schlüsselwort "Void" nicht als Typ erkennt, sondern immer nur als "int", haben möchte..

    #include <stdio.h>
    
    // Sowas steht doch in jeden C Buch!
    
    void main() 
    {
    char name[20];
    printf("Wie ist dein Name, Herr?");
    scanf("%s", &name);
    printf("Hallo %s, wir begrueßen dich!");
    }
    

    Aber wenn ich int hinschreibe klappt das auf einmal!

    printf("Hallo %s, wir begrueßen dich!"); 😕

    Fehlt da nicht was?! 🤡



  • Ja, das ,name , aber das geht auch so..



  • Spielgrips schrieb:

    Ja, das ,name , aber das geht auch so..

    Da sollte normalerweise der Compiler lautstark meckern....

    warning: the format string requires additional arguments

    ..oder so ähnlich!



  • Ich danke euch allen, ich kann jetzt wenigsten meine Codes schreiben ;)!

    My one Programm,

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void) 
    {
    
    int diff;
    int methus;
    int sie;
    int pr; 
    int okla;
    char jahre[30];
    
    printf("Wie alt sind Sie?\n");
    gets(jahre);
    sie = atoi(jahre);
    
    methus = 969; // Der Wert von Methusa!
    
    diff = methus - sie;
    printf("Sie sind %i Jahre juenger als Methusalem.\n\n", diff);
    
    printf("Wollen Sie das auch noch in Prozent wissen?");
    
    pr = methus / sie * 10;
    
    okla = pr / 10;
    
    printf("\n------------------------------------\n");
    printf("1Year = 10%%\n");
    
    printf("Sie sind %i%% juenger!\n\n\n", okla);
    
    printf("------------------------------------\n");
    getchar();
    
    }
    


  • SirLant schrieb:

    In "Jetzt lerne ich C" steht auch void main, sogar noch mit der Begründung, dass
    man das int main nur bräuchte wenn das programm einen Rückgabewert braucht, weil
    es von einem anderen aufgerufen wird.
    War daher auch erstaunt weshalb das Buch unter den Buchempfehlungen ist und nicht
    ein Wort über die falsche Syntax steht.

    das ist die falsche Annahme, die sich leider immer noch verbreitet. void main war noch nie von keiner Sprache definition erlaubt fuer C oder C++!

    Btw. solltest du deine C Programme nicht mit einem C++ Compiler kompilieren! (der gcc erkennt eigentlich die Programme an der Endung, also fuer C Programme .c nehmen, nicht .cpp das ist fuer C++)



  • #include <stdio.h>
    #define TEMPOLIMIT 100;

    int main(void)
    {

    printf("Die Geschwindigkeitsbegrenzung betraegt hier %i km/h. \n", TEMPOLIMIT);

    TEMPOLIMIT = 70;

    printf("Gemesen haben ich leider %i km/h. \n", TEMPOLIMIT + 25);
    printf("Haben Sie das Schild mit der %i nicht gesehen?\n", TEMPOLIMIT);

    }

    Das klappt nicht 😞 , er hat immer was mit:

    C:\WINDOWS\Desktop\c\rente.c [Warning] In function `main':
    7 C:\WINDOWS\Desktop\c\rente.c parse error before ';' token
    9 C:\WINDOWS\Desktop\c\rente.c parse error before '=' token
    11 C:\WINDOWS\Desktop\c\rente.c parse error before ';' token
    12 C:\WINDOWS\Desktop\c\rente.c parse error before ';' token



  • define ohne semikolon, sagt er doch...

    und du musst genauer werden.. und das ist kein c++ ... 😉



  • Da steht dann nach der Makroexpansion

    100; = 70;
    


  • Danke Freunde! Das hilft mir sehr weiter, aber eins wollte ich mal wissen!

    Was bedeutet:

    #define
    const

    Sonst steht das in mein Buch immer sehr erklärt dort, da wurde nur gesagt das die beiden eine Kostante Variable definieren...



  • #define definiert ein Präprozessor-Makro, und const eine Konstante. Keine Ahnung, ob das in deinem Götter-Buch vorkommt, aber normalerweise müsste der Präprozessor schonmal erwähnt worden sein.

    #define funktioniert so: Vor der eigentlichen Compilierung läuft der Präprozessor über den Quelltext, registriert alle #define-Direktiven und nimmt danach Textersetzungen im Quelltext vor. In deinem Beispiel wurde zb TEMPOLIMIT als 100; definiert: Der Präprozessor geht jetzt hin und ersetzt blind jedes weitere Vorkommen von TEMPOLIMIT durch 100;, egal ob da Nonsens rauskommt oder nicht.

    const dagegen ist ein sogenannter Qualifizierer (qualifier), der sagt, dass eine Variable nur initialisiert, d.h. direkt bei ihrer Definition mit einem Wert versehen werden darf, aber später nicht mehr verändert.



  • <kluger satz>
    const hat das gleiche Einsatzgebiet wie define, ist jedoch vorzuziehen, da der Compiler hier die verwendeten Typen und Gültigkeitsbereich besser kontrollieren kann, während es sich bei define um eine Textersetzung handelt, die nicht geprüft wird.

    const double pi=3.14156 //definiert die Konstante pi vom Datentyp double mit dem Wert 3.14156

    </kluger satz>



  • @ spielgrips

    nich verzweifeln! ich hab/hatte die selben Probleme mit C++ büchern.
    Ich lerne die Sprache auch erst seit 2monaten ungefähr, und nebenbei.
    Ein problem ist oft, das nicht drauf hingewießen wird welche
    LIBRARY (#include...) benötigt wird damit der Compiler mit nem befehl was anfangen kann. Oder in nem listing fehlt einfach nur ein SEMIKOLON und als anfänger blickt man nicht durch wo der Fehler liegt.
    ich lass immer das Grundgerüst das mir DEV++ vorschlägt so stehen (die MAIN-funktion) und passe den SourceCode aus den Büchern an.
    Man könnte hier auf der Seite auch mal sowas wie ne Bücherecke einrichten wo sich die Leute über ihre Erfahrungen austauschen können.

    #include <iostream>
    #include <stdlib.h>
    // weitere Includes
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
      // CODE
      // CODE
      // CODE
    
      system("PAUSE");	
      return 0;
    }
    

    :p cayamides



  • @cayamides

    Danke für dein großes Verständnis, du nimmst mir die Worte aus dem Mund 😃 !

    Das kann ja sein, das im Buch der alte C Standart beschrieben wird, wie bei html, und daher nicht der C/C++ Compiler nicht denn alten Standart kennt, nur denn neuen 🙄 ..

    ( Warum wird iher STANDART in **** dargestellt, ist ja kein schlimmes Wort für eine Schreibweise im Code)



  • Spielgrips schrieb:

    ( Warum wird iher stan**** in **** dargestellt, ist ja kein schlimmes Wort für eine Schreibweise im Code)

    Weil S_T_A_N_D_A_R_T_E_N vor 60 Jahren in Mode waren, heutzutage nimmt man den allgemein gültigen Standard!


Anmelden zum Antworten