Deklaration in Funktionen



  • ich habs eben wieder versucht
    geht nicht.

    benutze eclipse

    fehlermeldung:

    `for' loop initial declaration used outside C99 mode
    


  • mu schrieb:

    ich habs eben wieder versucht
    geht nicht.

    Wirf' Deinen Compiler weg. (Oder sag' ihm, nach welchem Standard er arbeiten soll.)

    greetz, Swordfish



  • ahm, mal komplett ot - wo sag ich ihm das?

    hats was mit meinem mingw zu tun?



  • @ Swordfish: Der war Geil! 😃
    Genau, C99. Das kann sein. Ich wusste doch da war was in der Vergangenheit ^^

    @ mu: Versuchs doch mal mit Dev-C++ von Bloodshed.



  • yo^^ dann kannst du pls gleich mal ein neuen thread aufmachen und mir reinposten was ich sonst noch alles brauche damit C-Programme laufen und mögliche einstellungen^^

    danke



  • beim mingw sollte es mit '-std=c99' gehen.
    🙂



  • aha, und das gibt man wo ein?



  • Woolve schrieb:

    Der war Geil! 😃

    Entschuldige, meine Humorerkennungsrate ist heute wiedermal im Keller - Was!?

    Woolve schrieb:

    @mu: Versuchs doch mal mit Dev-C++ von Bloodshed.

    Bloß nicht! Den nächsten, den ich mit dieser Empfehlung erwische, würg' ich! 😡

    Da MingW einen gcc mitbringt übergibst du ihm als Parameter -std=c99 (Vgl. http://gcc.gnu.org/onlinedocs/gcc-4.2.3/gcc/Standards.html#Standards).

    greetz, Swordfish



  • Woolve schrieb:

    Hi lord.hong!

    Mag vielleicht sein, dass es der Standard vorschreibt, aber es funktioniert trotzdem, wenn du

    void FunctionA()
    {
        for (int i = 0; i < 10; ++i)
        {
           // Do something
        }
    }
    

    schreibst. Poste doch mal den kompletten Code, vielleicht liegt der Fehler woanders.
    Welchen Compiler/IDE benutzt du?

    Als ich benutze VS2005. Ich finde auch keine explizite Einstellungen in den Projekt-Settings.

    Wenn ich o. g. Beispiel benutze bekomme ich diese Fehlermeldung. 84 ist die for-Schleife.

    1>source.c(84) : error C2143: syntax error : missing ';' before 'type'
    1>source.c(84) : error C2143: syntax error : missing ')' before 'type'
    1>source.c(84) : error C2143: syntax error : missing ';' before 'type'
    1>source.c(84) : error C2065: 'i' : undeclared identifier
    1>source.c(84) : warning C4552: '<' : operator has no effect; expected operator with side-effect
    1>source.c(84) : error C2059: syntax error : ')'
    1>source.c(85) : error C2143: syntax error : missing ';' before '{'

    Bin ehrlich gesagt nicht davon sehr begeistert, weil meine Kollegen die Variablen auch nie initialisieren - was mich dann doch etwas nervös macht.



  • lord.hong schrieb:

    Als ich benutze VS2005. Ich finde auch keine explizite Einstellungen in den Projekt-Settings.

    Microsofts C Compiler unterscheidet nur zwischen C und C++. Und im falle von C versteht er höchstens C90.

    Bin ehrlich gesagt nicht davon sehr begeistert, weil meine Kollegen die Variablen auch nie initialisieren - was mich dann doch etwas nervös macht.

    Was hat das mit uninitialisierten Variablen zu tun?

    greetz, Swordfish



  • Ups, der Eintrag war zu früh!



  • Swordfish schrieb:

    Bin ehrlich gesagt nicht davon sehr begeistert, weil meine Kollegen die Variablen auch nie initialisieren - was mich dann doch etwas nervös macht.

    Was hat das mit uninitialisierten Variablen zu tun?

    void FunctionA()
    {
       int i;
       int j;
    
       [....]
    
       j = 0;
       j += i;
    }
    

    Mich stört es, dass sie irgendwo später im Code die Variablen erst initialisieren und nicht gleich am Anfang. In C++ deklariere und intialisiere ich die Variable dort, wo ich sie auch benötige.

    Bin mir aber nicht ganz sicher, ob ich überhaupt deine Frage richtig verstanden habe.

    Gut, dann weiß ich nun, dass in C immer am Anfang alle Variablen deklariert werden müssen.

    Danke.



  • Woolve schrieb:

    Mag vielleicht sein, dass es der Standard vorschreibt, aber es funktioniert trotzdem, wenn Du

    for (int i = 0; i < 10; ++i)
    

    schreibst.

    Eben nicht immer. Hocke gerade über einer Portierung, in der der eine Compiler das mitgemacht hat, aber der Targetcompiler eben nicht. Hocke schon einige Zeit dran und finde das ausgesprochen unlustig, mich zur Tippse degradiert zu sehen. 😞



  • Swordfish schrieb:

    Woolve schrieb:

    @mu: Versuchs doch mal mit Dev-C++ von Bloodshed.

    Bloß nicht! Den nächsten, den ich mit dieser Empfehlung erwische, würg' ich! 😡

    irgend ein argument? warum nicht?



  • Weil das Ding seit 2005 nicht mehr weiterentwickelt wird, und die aktuellste version eine verbuggte Beta ist?

    greetz, Swordfish


Anmelden zum Antworten