Visual Studio Compiler



  • @Jochen Kalmbach:
    VS2010SP1 hilft da gar nichts. Er kann weder die Memberinitialisierung der Art .x=5; noch dynamische Arrays, Verlang' ich zuviel? Mach' ich was falsch?



  • Dynamische Arrays [meinst du damit Variable Length Arrays?] gibt es in C++ nicht.



  • Du redest in Rätseln....
    Für eine C++ 0x Feature-Übersicht siehe:
    http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx





  • GCC kann sowas:

    void func(int n)
    {
      char st[n];
    }
    


  • Ja, Variable Length Arrays. Das ist aber kein C++, das gibts nur in C99.



  • Als C übersetzt macht er's aber auch nicht.

    Nach meiner Meinung sollte C++ eine komplette Obermenge von C sein. Einfach aus dem Grund, dass man alte C Sourcen vielleicht mal auf C++ umschreiben möchte, und da nicht schon beim ersten Kompilieren in die Bredouille kommen will. Ich will da aber keine Diskussion lostreten, ist der falsche Thread.
    Jedenfalls ist jene Umsetzung in new und delete [] hochbrisant, da sich in irgendeinem versteckten Macro ein sizeof(st) befinden könnte (um beim Beispiel zu bleiben), char* st = new char[n] gibt dann nämlich die Pointerlänge. Vo n einem ebenso versteckten return ganz zu schweigen.
    Wenn das keine Argumente sind...



  • Bitsy schrieb:

    Als C übersetzt macht er's aber auch nicht.

    Weil das VS kein C99 kann (und vermutlich auch nie wird). Deine dynamischen Stack-Arrays wirst du so leider nicht hinkriegen.



  • dot schrieb:

    Kann man das denn von Visual Studio 2005 aus vernünftig nutzen?

    Ja natürlich, warum denn nicht? Man muß nur in den Optionen von MSVS die neuen Pfade für Includes, Libraries, Binaries und Tools setzen. Fertig.



  • Ich bezweifle dass VS2005 alle Compilerswitches von VC10 kennt. Oder werden die mit dem Plattform SDK auch nachgerüstet?



  • MS unterstützte (zu gunsten von C++) kein C99, unterstützt es nicht und wird es auch nie unterstützen.
    Im "alten" C++ ist keine C99-Unterstützung gegeben, da es eher standardisiert wurde. In C++11 wollte man C99 so gut wie möglich eingliedern aber VLAs werden trotzdem nicht unterstützt. Warum auch? 1) gibt es in C++ dafür std::vector und 2) sind VLAs problematisch, da dynamisches Reservieren auf dem Stack sehr kompliziert ist, lokale Variablen aber (in der Regel) auf dem Stack erzeugt werden.

    Und mal ne andere Frage: Warum unterstützt VS auch in der nächsten Version keine rangebasierte for-Schleife? MS hat ja schon ne eigene Implementierung:

    #include <iostream>
    
    int main()
    {
    	int zahlen[] = {1, 2, 4, 8, 16, 32, 64, 128, 512, 1024, 2048, 4096, 8192};
    
    	for each(auto i in zahlen)
    	{
    		std::cout << i*i << " ";
    	}
    
    	std::cin.get();
    	return 0;
    }
    

    Und dieses Programm kompiliert als Win32-Konsolenanwendung (obwohl ich immer dachte, dass for each nur bei CLR-Projekten unterstützt wird). Von

    for each(auto /*or other type*/ variable in array /*or container*/) stmt;
    

    nach

    for(auto /*type*/ variable : array /*or container*/) stmt;
    

    ist es doch letztendlich nur ein winziger Schritt, um nicht zu sagen "syntactic sugar".

    EDIT: ich tippe eindeutig zu langsam



  • Jonas OSDever schrieb:

    Im "alten" C++ ist keine C99-Unterstützung gegeben, da es eher standardisiert wurde.

    Gute Frage. Ich vermute mal die wollen wohl zuerst die großen Features am Laufen haben bevor sie den ganzen Kleimkram einbauen. Aber eigentlich müsstest du diese Frage Microsoft selbst stellen 😉



  • Ääh, dass ist keine Frage sondern ein Aussagesatz (sofern meine Deutschkenntnisse nicht völlig falsch sind).
    Meintest du die Frage mit der for-Schleife?



  • Oh sry, quote fail... 😮

    Ja ich meinte natürlich den Teil mit der for-Schleife.



  • Dean schrieb:

    Weil ich keine Lußt hab mir privat nen VS 2010 zu kaufen wenn ich ein VS 2003 und 2005 habe.Ich weiß, die Keys gibts im Esel oder bei Google. Sowas kommt mir aber nicht auf den PC.

    Mit dem Plattform SDK wird der aktuelle Compiler installiert, bei der MFC muss ich aber den VS 2005 Compiler verwenden oder? Bei VS 2003 war es noch so, dass der Compiler aus dem SDK bzw aus der standard Edition nicht optimierend arbeitete, ist das heute noch so im aktuellen SDK oder ist der Compiler vollwertig?

    Um diese Frage noch zu beantworten:
    Ja, der Compiler kann im Gegensatz zu den alten Standard Editions optimieren.
    Der Editor verfügt über sehr starke Suchfunktionen und kann auch falten (wie Notepad++). Allerdings ist das Quickmacro verloren gegangen. Oder ich find's nicht. Der Debugger ist in der Lage kleine Änderungen on the fly durchzuführen.
    Also, ich habe mich mit der 2008-Version angefreundet und sie mir ordentlich eingerichtet. Habe die 2010-Version auch, aber noch keine Notwendigkeit gesehen, sie einzusetzen. Vorsicht: Unter Win98 laufen die so erstellten Programme nicht mehr.



  • Wow hier is ja was los :), danke für die vielen Antworten.

    Aktuell hab ich gerade kein VS 2010, bin allerdings deutlich begeisterter als von VS 2005. Wobei einige kleine Details zum Beispiel ATL Server nicht dabei sind. Kurz vor dem Versions Wechsel würde ich mir aber privat keins kaufen und bin auch kein Freund von "grauen" Versionen, entweder kauf ich es mir, bin in einer Firma wo ich es auch auf meinem Laptop installieren kann oder ich warte.

    VS 2005 besitze ich ich in der Pro Version und noch c++ 2003 Net Standar d.

    Wenn ich alles richtig verstanden habe:

    -VS2010 Service Pack 1 ist für VS2010
    -Plattform SDK installieren und der aktuelle Compiler ist in VS 2005 nutzbar ohne Einschränkung
    - MFC / ATL Lib´s des VS 2005 kann ich auch mit dem neuen Compiler nutzen, unter verzicht des Ribbon Editors und der neuen Klassen
    - muss mich durch die Compiler Schalter wurschteln

    Alles richtig ? 😕


Anmelden zum Antworten