C++ Standard-Konformität von gcc 2.95.3 für Linux



  • Zu wieviel Prozent ist der gcc 2.95.3 mit dem ISO-C++-Standard kompatibel? Welche Standard-Eigenschaften werden nicht unterstützt?



  • kann man nicht sagen wieviel Prozent.

    Aber der gcc 2.95 hat doch einige Maengel! Wenn du den gcc 3.1 nimmst, dann bist du sehr viel knapper am Standard.

    Aber fuer die meisten faelle reicht der gcc 2.95 auch, in Grenzgebieten wirds halt kritisch, aber sonst reicht er!



  • Hallo,
    viel wichtiger ist in meinen Augen, dass man sich eine aktuelle Lib runterlädt. Der Compiler ist schon recht ordentlich (im Templatebereich sogar deutlich besser als der VC). Nur wenn du halt ne so ne uralte Gurkenlib hast, kommt trozdem kein Spass auf.



  • BTW: Der 3.1 soll von der Geschwindigkeit übrigens den ICC schlagen 🙂

    @Hume
    naja wenn man ne neue Lib nimmt, kann man auch den neuen Compiler nehmen.

    P.S.
    beim 2.9.5 werden zB. keine char_traits und stringstreams unterstützt und der Namespace std ist immer global.



  • beim 2.9.5 werden zB. keine char_traits und stringstreams unterstützt und der Namespace std ist immer global.

    Was aber nicht am Compiler sondern an der Uraltlib liegt. Ich verwende unter Linux auch den 2.95.3 und habe sowohl char_traits, als auch stringstreams 🙂



  • Bei GCC 2.95.3 stellt der Namespace std:: lediglich ein Alias für den globalen Namespace :: dar.

    Ein std::cout ist somit gleichzusetzen mit ::cout und mit cout. Das ganze funktioniert auch ohne explizite angabe von "namespace std;".

    Im Gegenteil. Ich hatte beim 2.95er das Problem, dass der Compiler folgendes Programm nicht kompilieren wollte:

    #include <iostream>
    
    using namespace std;
    
    int
    main(int argc, char** argv)
    {
      std::cout << "Hallo Welt" << std::endl;
      return 0;
    }
    

    Erst nachdem die using namespace std; Zeile entfernt wurde und auch bei cout und cendl keine Namespaces mehr angegeben wurde lies sich das ganze kompilieren:

    #include <iostream>
    
    int
    main(int argc, char** argv)
    {
      cout << "Hallo Welt" << endl;
      return 0;
    }
    

    Mit der aktuellen 3er Version des GCC gibt es hingegen keine Probleme. Der 3.1.1 implementiert zwar noch immer nicht 100% ANSI/ISO C++ ist aber auf dem Besten Wege das Ziel in Naher Zukunft zu erreichen. Einen Überblick über den Projektstatus ist auf den Webseiten von GNU und FSF zu finden: http://gcc.gnu.org/



  • OK! Danke erstmal! 🕶 Wie schaut's mit Exception-Handling aus? Gibt's da Schwierigkeiten?


Anmelden zum Antworten