Compiler, IDE ...



  • was ich von der msvc 7.1 beta gehört habe soll sie sehr standard konform sein
    vieleicht lohnt sich etwas warten dan kann man sich den intel sparen,

    aber das problem mit den msvc 6.0 und templates läst sich lösen, man schaue nur den loki port von HumeSikkins an, ich habe auch schon überlegt ein convertier zu schreiben der automatisch die nötigen workarouns schreibt, aber bis ich dazu komme ist der msvc 6.0 schon ausgestorben



  • Ich dachte der Intel C++ wäre weitgehend kompatibel zum VC? Der hat doch sogar die Einschränkungen bzgl. des for(int i;)-Bugs, damit der gleiche Quellcode ohne Änderungen übersetzbar ist... steht doch auch irgendwo bei Intel, der Intel C++ ist kompatibel zum VC - das heißt aber auch, daß er nicht wesentlich näher am Standard dran sein kann...



  • mit /Za und -Qansi geht das schon



  • aber das problem mit den msvc 6.0 und templates läst sich lösen

    Das sollte besser heißen: "Aber die Probleme des VC 6 mit Templates lassen sich manchmal lösen". Einige Sachen erfordern nämlich einen riesigen Aufwand (z.B. partial ordering von Funktionstemplates) und andere lassen sich überhaupt nicht umsetzen (z.B. vernünftige Typetraits - es ist z.B. nicht möglich für ein beliebiges T& das entsprechende T zu liefern ).

    @Marc++us
    Meines Wissens hat der Intel einfach ein paar Bugs weniger.
    Das:

    template<typename T, int n>
    int arraylength(T (&arr)[n])
    {
      return n;
    }  
    int main()
    {
        int arr[20];
        cout << arraylength(arr) << endl;
    }
    

    geht z.B. nur mit dem Intel, nicht aber mit dem VC 6.

    Das wiederum läßt beide gleichermaßen blöd aussehen:

    template <unsigned i>
    int BloedesBeispiel()
    {
        return i;
    }
    int main()
    {
        // gibt fälschlicherweise dreimal 2 aus
            cout << BloedesBeispiel<0>() << "\n";
        cout << BloedesBeispiel<1>() << "\n";
        cout << BloedesBeispiel<2>() << flush;
    }
    


  • Original erstellt von HumeSikkins:
    Meines Wissens hat der Intel einfach ein paar Bugs weniger.

    Das ist auch mein Kenntnisstand... er stürzt bei einigen Template-Konstruktionen nicht ab, aber ich weiß nicht ob man ihn deswegen als "näher am Standard" bezeichnen darf.



  • Original erstellt von Dimah:
    mit /Za und -Qansi geht das schon

    Mit diesen Compilersettings kannst Du aber weder die MFC noch ATL übersetzen, und damit sind diese Settings weitgehend sinnlos.



  • Original erstellt von Marc++us:
    Das ist auch mein Kenntnisstand... er stürzt bei einigen Template-Konstruktionen nicht ab, aber ich weiß nicht ob man ihn deswegen als "näher am Standard" bezeichnen darf.

    Ich hab den ICC eine zeitlang getestet. Also was templates betrifft war er ganz OK -> partielle spezialisierung und sonst noch einige Kleinigkeiten.

    Bei meinem kleinen conformance-Test reichte es immerhin fuer Platz 3 hinter gcc3 und Borland 6.

    Aber ausser templates kann er eigentlich nicht wirklich mehr, sein Hauptaugenmerk liegt ja auch auf schnellem Code!



  • also C++Builder als nähestes am Standard? Warum is der nur so langsam 🙄

    Wenn sich der Intel so verhält wie VC dann hilft er auch nicht wirklich weiter. Hatte irgendwo mal gelesen, dass er der einzige ist, der das "extern" für Templates unterstützt und daraus geschlossen, dass er recht gut am Standard wär.

    Kennt jemand das Ding von DigitalMars mitsamt der Entwicklungsumgebung? Wenn ich das recht verstehe, kriegt man die nur, wenn man die CD bestellt? Ansonsten preisen sie sich ja, dass er beim Compilieren und Builden am schnellsten wären.

    Hab jetzt mal MinGW mit DevC++ ein bisschen getestet. Der Compiler is ja schon mal gut. Die IDE sieht ja auch wirklich nicht schlecht aus. Aber der Debugger ist halt schon recht einfach. Um Projekte mit Threads zu Debuggen oder ne DLL scheint er nicht zu reichen ...

    Dann hab ich mal nach reinen Debugger-Umgebungen geguckt. CodeInsight scheint so der Standard zu sein für GNU-Compiler (wenn man nicht auf Kommandozeile arbeiten will). Aber für die 3.2 Version vom MinGW scheint momentan keine lauffähige Windows-Version zu geben.
    Wenn ich unseren Projektleitern sag, das müssen wir erst selber Hand anlegen, compilieren etc. dann werden sie nicht so begeistert von sein.

    Mit was arbeitet denn Ihr so im Job?



  • Original erstellt von Marc++us:
    Mit diesen Compilersettings kannst Du aber weder die MFC noch ATL übersetzen, und damit sind diese Settings weitgehend sinnlos.

    jup, in diesen fall macht das ja nichts weil sie ihre guis mit Delphi machen

    Original erstellt von <komk>:
    **Wenn sich der Intel so verhält wie VC dann hilft er auch nicht wirklich weiter. Hatte irgendwo mal gelesen, dass er der einzige ist, der das "extern" für Templates unterstützt und daraus geschlossen, dass er recht gut am Standard wär.
    **

    also extern kann er auch nicht,
    ich würde ihn aber noch nicht abhacken, probiere mal die 30 tage test version (instalieren, ein hacken in msvc umstellen, und schon ist er bereit), der intel ist sozusagen bug komatiebel mit msvc d.h. aber nicht das du dein code extra mit den bugs code musst, du hast blos die wahl (mit /Za und -Qansi dan nicht mehr)

    [ Dieser Beitrag wurde am 19.12.2002 um 18:09 Uhr von Dimah editiert. ]



  • Wo wir gerade beim Intel Compiler sind: Hat einer von euch den mal so in die VC IDE integriert bekommen, dass man auch doppelt auf die Fehlermeldungen klicken kann und das dann an die entsprechende Stelle im Code gesprungen wird? Bei mir macht der da irgendwie immer doppelte Backslashes rein und findet deshalb die entsprechenden Dateien nicht.



  • ja ich, kein probleme



  • @Dimah
    Ok. Danke. Dann liegt's wohl mal wieder an meiner Unfähigkeit. Hatte gehofft das ganze auf die Unfähigkeit anderer schieben zu können 😉



  • Original erstellt von HumeSikkins:
    @Dimah
    Ok. Danke. Dann liegt's wohl mal wieder an meiner Unfähigkeit. Hatte gehofft das ganze auf die Unfähigkeit anderer schieben zu können 😉

    hast du ihn beim setup erlaubt die umgebungs variablen zu setzen? ich ja



  • Original erstellt von HumeSikkins:
    Ok. Danke. Dann liegt's wohl mal wieder an meiner Unfähigkeit.

    Die VC++ IDE sucht verlangt lediglich
    filename(zeile)
    am anfang der fehlermeldung

    So habe ich zB auch den gcc geschafft in die VC++ IDE zu integrieren.
    Welches Ausgabeformat hat denn dein ICC?
    er sollte etwas in der art

    main.cpp(12) : error C1414: Du doedel!

    sein, dann schluckt es der VC++! (zumindest theoretisch)



  • Original erstellt von Shade Of Mine:
    **Die VC++ IDE sucht verlangt lediglich
    filename(zeile)
    am anfang der fehlermeldung

    So habe ich zB auch den gcc geschafft in die VC++ IDE zu integrieren.
    Welches Ausgabeformat hat denn dein ICC?
    er sollte etwas in der art

    main.cpp(12) : error C1414: Du doedel!

    sein, dann schluckt es der VC++! (zumindest theoretisch)**

    wie hast du das gemacht gcc in vc? ich habe schon danach gesucht aber nichts gefunden



  • Original erstellt von Dimah:
    wie hast du das gemacht gcc in vc? ich habe schon danach gesucht aber nichts gefunden

    jo, da gibts leider nix 😞

    Du kannst dir ja mal meinen Ansatz ansehen.

    Aber das parsen der Ausgabe vom gcc ist etwas umstaendlich - denn der gcc schreibt nicht nach stdout sondern nach stderr - das ist natuerlich fies.

    aber das programm besteht zu 95% aus einem switch mit vielen unter-switches 😃
    Sehr miserables design...

    PS:
    grosser Dank geht hierbei an Walter Bright von Digital Mars, der mich auf die Idee dazu gebracht hat und so nett war mir die Source der Digital Mars cl.exe zu ueberlassen!

    [ Dieser Beitrag wurde am 19.12.2002 um 21:19 Uhr von Shade Of Mine editiert. ]



  • Hallo,
    meine VC Fehlermeldungen sehen so aus: "D:\cdtemp\test\test.cpp(737) : error C2065: 'coute' : nichtdeklarierter Bezeichner"

    Der Intel-Compiler produziert:

    "D:\\cdtemp\\test\\test.cpp(737): error: identifier "coute" is undefined"

    Die doppelten Backslashes sind das Problem.

    [ Dieser Beitrag wurde am 19.12.2002 um 21:31 Uhr von HumeSikkins editiert. ]



  • Könnte das mit dem GCC sauber dokumentiert werden? Das wäre ein hilfreicher Tip, da man sich die VC-IDE ja über die Autorenversionen fast umsonst besorgen kann.... dann kann man die VC-IDE mit einem anderen Compiler nutzen, verletzt kein Copyright und hat trotzdem eine gute IDE mit einem starken Compiler... für 15 EUR.



  • gcc auf der VC-Oberfläche????

    Das wär ja supergenial! Aber wie funzt das mit den make-Files? Und wie mit dem Debugger? Sind das nicht andere Formate und so?

    grosser Dank geht hierbei an Walter Bright von Digital Mars, der mich auf die Idee dazu gebracht hat und so nett war mir die Source der Digital Mars cl.exe zu ueberlassen!

    Geht das dann auch mit dem DigitalMars-Compiler? Der soll ja recht gut sein.



  • Ich habe das Projekt eigentlich abgebrochen, aber wenn so grosse Nachfrage besteht schau ich mir das vielleicht nochmal an...

    Momentan ist irgendwo der Wurm drinnen und ich weiss nicht mehr genau wo...

    zB das linken fehlt noch total! ABer kompilieren kann man AFAIR schon 🙂

    Der 'Trick', der auch von Digital Mars und Intel verwendet wird ist der: man ersetzt die cl.exe durch eine eigene 'proxy' Datei, welche die Command Line Optionen erstetzt und dann den richtigen Compiler aufruft.

    Beim Intel und Digital Mars geht das sehr einfach, da sie beide Binary Kompatibel mit dem VC++ sind... Der gcc aber nicht 😞

    Ausserdem hat die Proxy Datei vom Digital Mars ein paar kleine Macken 😞

    IMHO ist der Digital Mars ein schoener Compiler, aber gcc ist halt besser.

    Wer interesse daran hat, an dem 'cl Proxy' Projekt mitzuarbeiten der schreibt mir bitte eine mail: toni@schornboeck.net


Anmelden zum Antworten