Invalid Null Pointer mit VS2008



  • Bücherkenner schrieb:

    Santus schrieb:

    P.S.: Warum ist void main() kein c/c++?? Das steht so auch massig in meinem Lehrbuch.

    Interessant ist auch, dass Visual Studio

    void main(void)
    

    nicht anmeckert. g++ unter Linux tut das durchaus und fordert in der Funktion main ein return für die int Rückgabe ein. Dort könnte man einem Anfänger (nur dem?) auch den Compilerschlater -pedantic empfehlen um auf reines ISO C++ zu prüfen. Gibt es etwas vergleichbares für Visual C++?

    Gruß,
    Bitshift



  • BitShift schrieb:

    Interessant ist auch, dass Visual Studio

    void main(void)
    

    nicht anmeckert... Gibt es etwas vergleichbares für Visual C++?

    Zumindestens wenn man die Warnstufe auf 4 eingestellt, und die "Language Extensions" deaktiviert, bekommt man dann auch unter VC++ eine Warnung

    warning C4326: return type of 'main' should be 'int' instead of 'void'
    

    cu André



  • asc schrieb:

    Zumindestens wenn man die Warnstufe auf 4 eingestellt, und die "Language Extensions" deaktiviert, bekommt man dann auch unter VC++ eine Warnung

    Aber wehe dir, wenn deine Datei mit einem //-Kommentar endet.. 🙂



  • drakon schrieb:

    Aber wehe dir, wenn deine Datei mit einem //-Kommentar endet.. 🙂

    Da (soviel ich weiß auch im Standard stehend), die letzte Zeile eine Leerzeile sein muss, ist das uninteressant 😉



  • asc schrieb:

    die letzte Zeile eine Leerzeile sein muss, ist das uninteressant 😉

    Muss sie nicht. Es muss nur das letzte Zeichen ein newline sein...



  • asc schrieb:

    Da (soviel ich weiß auch im Standard stehend), die letzte Zeile eine Leerzeile sein muss, ist das uninteressant 😉

    <nitpick>
    Im Standard steht, dass eine Zeile eine von \n abgeschlossene Einheit ist. Demnach muss ein Quellfile keine Leerzeile am Ende enthalten, sondern es muss lediglich die letzte Zeile durch \n abgeschlossen sein. Dass das wie eine Leerzeile aussieht, ist ein Problem der Editoren.
    </nitpick>



  • BitShift schrieb:

    Dort könnte man einem Anfänger (nur dem?) auch den Compilerschlater -pedantic empfehlen um auf reines ISO C++ zu prüfen. Gibt es etwas vergleichbares für Visual C++?

    Nicht nur dem Anfänger. Wer portablen Code produzieren will sollte auch als Fortgeschrittener oder Profi hin und wieder auf -pedantic zurückgreifen und die entsprechenden Meldungen eliminieren. Was -pedantic bei VC angeht: Ich bezweifle dass es das dort gibt. Mit seinen diversen Eigenheiten wie den bereits genannten Language Extensions und deliberatem Nicht-implementieren von Standard-Features (alternative tokens wie and, or, etc., exception pecifications, ...) dürfte es für VC schwierig sein, auf extreme Standardkonformität zu pochen. "-pedantic: use another compiler." 😉



  • pumuckl schrieb:

    Was -pedantic bei VC angeht: Ich bezweifle dass es das dort gibt...

    Unter diesen "Language Extensions" sind alle VC-Spezifischen Dinge (wie auch and, or...) zusammengefasst. Ich gehe mal davon aus das dies dem -pedantic bei anderen Compilern sehr nahe kommt.



  • Wo kann man die Language Extensions bei VC++ ein- oder ausschalten? Ich hab das nirgends gesehen...



  • Nexus schrieb:

    Wo kann man die Language Extensions bei VC++ ein- oder ausschalten? Ich hab das nirgends gesehen...

    Ich habe hier gerade den deutschen VC2008, daher englische Angabe geschätzt:

    Projekteigenschaften, C/C++ / Sprache, Spracherweiterungen deaktivieren
    Properties, C/C++ / Language, Language Extensions

    cu André



  • Vielen Dank. Hehe, als erstes erhielt ich Fehler wegen dem fehlenden Newline am Ende der Datei. 😉

    Gibt es bei VC++ eigentlich eine Möglichkeit, die Standard-Projekteinstellungen zu verändern, sodass man diese bei neuen Projekten gleich nutzen kann? Wäre noch praktisch, auch wegen Warn-Level 4.


Anmelden zum Antworten