Windows Visual C++ 2010 Express



  • Inwiefern ist denn Visual Studio weniger für Anfänger geeignet als Code::Blocks?

    Das ist durchaus ernst gemeint, ich kenne Code::Blocks nicht gut. Aber ich finde Visual Studio eigentlich recht intuitiv.



  • Wenn er die Fehlermeldungen in MSVC nicht liest und versteht, wird er das in C::B auch nicht besser machen.

    Man muss einem Anfänger auch erklären, wie er die Fehlermeldungen interpretieren muß. Es ist für einen Anfänger sicherlich nicht einfach mal die Fehlermeldung richtig zu deuten. Wenn er das könnte, wäre er ja kein Anfänger. 😉



  • Jo, leider sind viele Anfänger nicht in der Lage, das Problem hinreichend konkret zu beschreiben.
    Im übrigen finde ich für Anfänger empfehlenswert, den Compiler/Linker aus der Konsole mittels cl .... zu starten, zumindest solange man mit nicht mehr als zwei c/cpp - Dateien hantiert.
    Das befreit einen zunächst mal von dem Overhead, den die IDE mit sich bringt. Während man dann immer weiter lernt, kann man sich parallel dazu ein wenig in den Umgang mit der IDE einarbeiten. Mich nervt es manchmal heute noch, wenn ich suchen muß, wo ich zusätzliche link-Bibliotheken oder Include-Verzeichnisse eintragen muß, weil die Möglichkeiten einer IDE doch sehr umfangreich sind.

    Das kompilieren/testen in bzw. aus der Konsole würde gleichzeitig die immer wieder auftretende Frage erledigen: "Mein Programm läuft kurz, aber dann geht das Fenster zu und ich sehe die Ausgabe nicht, was kann ich dagegen machen."



  • Artchi schrieb:

    Es ist für einen Anfänger sicherlich nicht einfach mal die Fehlermeldung richtig zu deuten. Wenn er das könnte, wäre er ja kein Anfänger. 😉

    Wobei es auch für Fortgeschrittene schnell mal herausfordernd werden kann, dutzende Zeilen für einen kleinen Fehler bei 'ner Template-Sache 🙂



  • fdgdfg schrieb:

    Artchi schrieb:

    Es ist für einen Anfänger sicherlich nicht einfach mal die Fehlermeldung richtig zu deuten. Wenn er das könnte, wäre er ja kein Anfänger. 😉

    Wobei es auch für Fortgeschrittene schnell mal herausfordernd werden kann, dutzende Zeilen für einen kleinen Fehler bei 'ner Template-Sache 🙂

    Oh ja. Es gab für den VS2005 oder VC6, weiss nicht mehr, mal ein Addin, welches die ganzen STL Fehlermeldungen bereinigte und nur das wesentliche anzeigte. Leider wurde das nie weiterentwickelt und ich weiss nicht mehr wie das hiess xD.
    Wäre mal ein Feature für Visual Assist^^.



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich weiss nicht, was alle mit diesen Template-Fehlern haben. Das Problem ist normalerweise nicht die Länge und Ausführlichkeit, sondern die zunächst verwirrende Fehlerbeschreibung. Das liegt daran, dass für den Compiler oft nur Low-Level-Informationen vorhanden sind und die Semantik im Grossen nicht erfasst werden kann (das wollte man mit Concepts ja u.A. verbessern). Und daran können die Tools auch nicht viel ändern.

    std::list<int> l;
    std::sort(l.begin(), l.end());
    
    error C2784: "reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)": 
    template-Argument für "const std::reverse_iterator<_RanIt> &" konnte nicht von "std::_List_iterator<_Mylist>" hergeleitet werden.
    

    Es wäre besser, wenn hier stehen würde, dass std::sort() Random-Access-Iteratoren benötigt. Darum brauchts halt ein wenig Erfahrung, um vom nicht vorhandenen operator- für Iteratoren auf die falsche Iteratorenkategorie zu schliessen.

    Und zur Länge: Meist steht mehr über den Kontext und die Aufrufhierarchie, was beim Nachvollziehen sehr hilfreich sein kann. Die ganze Fehlermeldung unter Visual Studio 2010 (ohne Dateipfade):

    1> error C2784: "reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)":
       template-Argument für "const std::reverse_iterator<_RanIt> &" konnte nicht von "std::_List_iterator<_Mylist>" hergeleitet werden.
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<int,std::allocator<int>>           [b]<- welcher Container[/b]
    1>          ]
    1>          Siehe Deklaration von 'std::operator -'                       [b]<- Link[/b]
    1>          Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "void std::sort<std::_List_iterator<_Mylist>>(_RanIt,_RanIt)".  [b]<- Link[/b]
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<int,std::allocator<int>>,          [b]<- Template-Argumente von std::sort()[/b]
    1>              _RanIt=std::_List_iterator<std::_List_val<int,std::allocator<int>>>
    1>          ]
    


  • Nochmal im Bezug auf die Komplexität von C::B und VS - bei C::B kann man eine cpp Datei öffnen, f9 drücken, und schon erhält man eine schöne Ausgabe in der Konsole. Das meinte ich mit "Anfängerfreundlicher". Zwar sind die Fehlermeldungen auf Englisch, allerdings sind es am Anfang meist leichte Dinge wie "x was not declared in this scope" oder ähnlichem. Und dank google Übersetzer kann man die dann auch schnell übersetzen. Ach ja, ich hatte auch mal eine Zeit lang VS benutzt, und irgendwie kamen mir die Deutschen Fehlermeldungen nicht unkomplizierter vor. Nur weil die Fehler da auf Deutsch sind, heißt es nicht, dass man sie unbedingt leichter versteht. Außerdem ist C::B deutlich übersichtlicher aufgebaut (finde ich), und man findet schnell das, was man sucht.
    Außerdem: es gibt auch eine deutsche Sprachdatei für C::B. Das gilt natürlich nur für die IDE, aber wer sich nicht am Anfang mit Englisch rumschlagen will, kann dieses einfache Tutorial befolgen und schon ist das meiste (rund 90%) auf Deutsch. Naja, es bleibt ja schlussendlich ihm überlassen. Wenn er weiterhin Probleme haben sollte, kann er ja auf C::B umsteigen..

    mfg



  • HighLigerBiMBam schrieb:

    Dann muss ich dich leider enttäuschen, aber dein Code ist somit korrekt. Und jetzt lernst du hoffentlich etwas, was du nicht mehr vergisst. Es gibt zwei Modi, wie man ein Projekt erstellen kann. Eines ist DEBUG das andere ist RELEASE. Ich wette du hast den Code zwar verändert die release-version richtig erstellt und die debug-version gestartet, welche nie neu erstellt wurde.
    Eidt: und wie du siehst wiederholen sich die Leute mit den selben Tips ohne zu lesen das dieser schon X-mal gepostet wurde 😕 Ich versuche wenigstens zu helfen, auch wenn ich unhöflich bin. 🙄

    Aha jetzt hats funktioniert danke
    Ein bisschen rumprobieren und schon funktionierts

    Danke für die zahlreichen Antworten.
    Aber ich habe auch schon Code Blocks auf meinem PC aber irgendwie
    funktioniert es da nicht mit dem selben Programm
    Muss man da irgendeine andere Bibliothek nehmen?



  • truggi schrieb:

    funktioniert es da nicht

    Hmh. Ein typischer Fall von copy&paste, kurz testen, nichts funktioniert, sofort nachfragen. Ich will ja nicht unhöflich erscheinen, aber ein wenig Eigeninitiative kann helfen. Außerdem wäre eine Problembeschreibung ja ganz nett. Dein Problem lässt sich wunderbest per Google lösen.

    Zum Beispiel hier:

    Code::Blocks Hilfe

    Ist zwar von unserem Hass-Autor Jürgen Wolf, aber bei Anleitungen kann man ja nicht viel falsch machen.

    Und, noch als kleiner Ratgeber dazu: http://www.c-plusplus.net/forum/136013

    Beachte die Tipps und dir wird geholfen werden.


Anmelden zum Antworten