Deklaration einer Variablen nicht mehr am Anfang?



  • Im C99-Standard muss die Deklaration einer Variablen nicht mehr am Anfang eines Anweisungsblocks erfolgen.

    habe gerade folgendes gelesen und bin doch sehr erstaunt - stimmt das?



  • Vertexwahn schrieb:

    Im C99-Standard muss die Deklaration einer Variablen nicht mehr am Anfang eines Anweisungsblocks erfolgen.

    habe gerade folgendes gelesen und bin doch sehr erstaunt - stimmt das?

    ja, das stimmt. Aber ich halte mich persönlich nicht daran, weil ich der Meinung bin, dass alle Variablen am Anfang des Anweisungsblocks zu mehr Lesbarkeit führen.



  • mmmh... MsVC Net 2003 mekert mich immer an, wenn ich ein Variblendefinition miten im Anweisungsblock mache - kann man das irgendwie ausstellen?



  • supertux schrieb:

    ja, das stimmt. Aber ich halte mich persönlich nicht daran, weil ich der Meinung bin, dass alle Variablen am Anfang des Anweisungsblocks zu mehr Lesbarkeit führen.

    naja - ich finde es halt doof, wenn ich für ne schleife einen Zähler benötigt habe und diesen Zähler dann nicht einfach in der Schleife definieren kann - z. B.: for(int counter; counter < 10; counter++) funzt ja vor C99 nicht (?oder?) - dumm ist halt nur das mein Compiler nicht C99 Konform ist 😉



  • Vertexwahn schrieb:

    naja - ich finde es halt doof, wenn ich für ne schleife einen Zähler benötigt habe und diesen Zähler dann nicht einfach in der Schleife definieren kann

    Ich habe mir deshalb

    {
      int i;
      for(i=0; i<foo; ++i)
      {
        bar();
      }
    }
    

    angewöhnt



  • Vertexwahn schrieb:

    supertux schrieb:

    ja, das stimmt. Aber ich halte mich persönlich nicht daran, weil ich der Meinung bin, dass alle Variablen am Anfang des Anweisungsblocks zu mehr Lesbarkeit führen.

    naja - ich finde es halt doof, wenn ich für ne schleife einen Zähler benötigt habe und diesen Zähler dann nicht einfach in der Schleife definieren kann - z. B.: for(int counter; counter < 10; counter++) funzt ja vor C99 nicht (?oder?) - dumm ist halt nur das mein Compiler nicht C99 Konform ist 😉

    Nach C99 sollte gehen

    rex@supertux:~> echo -e "void foo(void)\n{\tfor(int i=0; i<10; ++i);\n}" > test.c
    rex@supertux:~> gcc -c test.c --std=c99
    rex@supertux:~>
    

    Mein gcc (3.3.5) liefert da weder Warnungen noch Fehler zurück.




Anmelden zum Antworten