Die meistgestellten Fragen



  • Ich glaube nicht, dass man Leuten vorschreiben sollte, welchen Compiler (bzw. hier eher welche GUI) sie verwenden. Der erste Fall ist ja noch verständlich (wenn auch die meisten Anfängerfehler _nichts_ damit zu tun haben), aber Dev-C++ und Code::Blocks verwenden schließlich AFAIK beide den gcc.
    Ich könnte genauso gut sagen: "Verwendet gefälligst alle Vim, weil ich das auch tue". Keine gute Idee.

    @ Michael E.
    Prima Sache, danke für die Arbeit. Wenn das Sticky gemacht wird animiert es vielleicht mehr Nutzer sich vorher zu Informieren als die FAQs (die IMHO _sehr_ unübersichtlich sind).
    Ich schau mal, ob ich noch mehr immer wiederkehrende Fragen finde.

    /edit:
    Bei Pkt. 1 fehlt ein 'e' 😉
    Punkt 3 solltest du noch mal überarbeiten. Ein Hinweis darauf, dass man using namespace nicht in Headern macht fehlt und

    Als Faustregel gilt, dass aus <xxxxxx.h> ein <cxxxxxx>

    stimmt so nicht. Aus iostream.h wurde nicht ciostream, es fehlt der Hinweis darauf, dass die C-Header gemeint sind. Der Teil mit <conio.h> erübrigt sich, wenn der Leser Punkt 2 beherzigt hat.



  • .filmor schrieb:

    Ich glaube nicht, dass man Leuten vorschreiben sollte, welchen Compiler (bzw. hier eher welche GUI) sie verwenden. Der erste Fall ist ja noch verständlich (wenn auch die meisten Anfängerfehler _nichts_ damit zu tun haben), aber Dev-C++ und Code::Blocks verwenden schließlich AFAIK beide den gcc.

    Sry, ich meinte IDE. Und bei Dev-C++ zu Code::Blocks ist halt der Vorteil, das Code::Blocks die Konsole nicht automatisch schließt. Ist vielleicht kein großer Vorteil, trotzdem kriegen es viele Einsteiger nicht hin, bei jedem verlassen im Code, das hinzuschreiben. Vor allem wenn sie mehrere returns in main() haben (oder auch irgentwo ein exit(0) eingebaut haben) sind sie schnell frustriert. Bedenke: ->Anfänger<-fragen. Das sind halt meistens Leute mit Visual C++ 6 und Dev-C++. Das finde ich einfach lästig, wenn die dann mit Code ankommen, wo sie das cin.get() falsch postiert haben.

    mfg.



  • @joomoo Hast du da ein Beispiel aus diesem Forum für? Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

    @Michael E.
    Grundlagen des Dateihandlings mit fstreams und ein Link auf die stringstream-FAQ wären vielleicht noch angebracht.


  • Mod

    .filmor schrieb:

    Als Faustregel gilt, dass aus <xxxxxx.h> ein <cxxxxxx>

    stimmt so nicht. Aus iostream.h wurde nicht ciostream, es fehlt der Hinweis darauf, dass die C-Header gemeint sind.

    das schöne an faustregeln: sie können auch mal falsch sein, ohne falsch zu sein 😉 er hat den fall ja schließlich auch bereits im code behandelt. ich halte eher die bemerkung über <string.h> und konsorten für ungünstig. esgeht ja nicht darum, welche header verwendet werden, sondern mit welcher art strings man arbeitet.



  • Häufig gestellt wird im Moment wohl auch

    "Ich habe eine Variable [ersetzbar durch Funktion] in meine .h-Datei geschrieben, und bekomme jetzt immer 'Multiple Definition'-Fehler". Quasi der Komplementärfall zu 5. 😉



  • .filmor schrieb:

    @joomoo Hast du da ein Beispiel aus diesem Forum für?

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-150600-and-postdays-is-0-and-postorder-is-asc-and-start-is-20.html
    gab's noch mehr, nur finde ich jetzt nicht auf die schnelle.

    Obwohl ich persönlich nicht zu den Leuten gehöre, höre ich hier des öfteren das Dev-C++ totaler schrott sein soll, deswegen ist es doch nicht schlecht einem Anfänger schon gleich ne ordentlich IDE zu geben, oder?

    Ich mein: Was spricht denn dagegen den Visual-C++-6-Leuten den neuen 2005er zu empfehlen? Wird hier sowieso sehr oft getan, dann schreiben wir's dazu, oder?

    Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

    Wenn du noch nie programmiert hast, ist es erstmal frustierend, dass du schon drei Zeilen, die du 0 verstehst, an die richtige stelle tun sollst, nur damit ein "Hallo Welt" funktioniert. Außerdem muss man das gleiche ja denn bei nem return in main oder einem exit/abort wieder davor packen.

    mfg.



  • gut, und nun erkläre den anfängern noch klassen und kapselung 😉



  • joomoo schrieb:

    .filmor schrieb:

    @joomoo Hast du da ein Beispiel aus diesem Forum für?

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-150600-and-postdays-is-0-and-postorder-is-asc-and-start-is-20.html
    gab's noch mehr, nur finde ich jetzt nicht auf die schnelle.

    Ok, du hast wohl recht.

    joomoo schrieb:

    Obwohl ich persönlich nicht zu den Leuten gehöre, höre ich hier des öfteren das Dev-C++ totaler schrott sein soll, deswegen ist es doch nicht schlecht einem Anfänger schon gleich ne ordentlich IDE zu geben, oder?

    Ich hatte mit Dev-C++ nie wirklich Probleme. Wer meint, dass müsse man demjenigen sagen kann das ja tun, wenn der betreffende fragt.

    joomoo schrieb:

    Ich mein: Was spricht denn dagegen den Visual-C++-6-Leuten den neuen 2005er zu empfehlen? Wird hier sowieso sehr oft getan, dann schreiben wir's dazu, oder?

    Aber meistens wirds da dazu geschrieben, wo es auch passt, nämlich wenn ein Compilerfehler auftritt, der von dem miesen VC6-Compiler herrührt. Diese Fälle sind aber AFAIK (ich benutze schon immer gcc) nicht das, was einem C++-Anfänger direkt vor der Nase rumspringt. Wenn er bei Metaprogrammierung angekommen ist hat er denke ich genug Verständnis dafür, welchen Compiler er nehmen sollte.

    joomoo schrieb:

    Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

    Wenn du noch nie programmiert hast, ist es erstmal frustierend, dass du schon drei Zeilen, die du 0 verstehst, an die richtige stelle tun sollst, nur damit ein "Hallo Welt" funktioniert. Außerdem muss man das gleiche ja denn bei nem return in main oder einem exit/abort wieder davor packen.

    Die drei Zeilen werden in dem Artikel aber sinnvoll in eine Funktion gepackt, die dann sehr leicht verständlich ist.

    Tuxinator schrieb:

    gut, und nun erkläre den anfängern noch klassen und kapselung 😉

    !(OOP == C++) :p



  • Vielleicht noch "Einmal Zahl nach String und zurück" (http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html).
    Steht zwar in den FAQs auf der ersten Seite, es kommen aber trotzdem regelmäßig Fragen zu dem Thema.
    Manchmal frage ich mich, ob überhaupt jemand in die FAQs schaut...

    .filmor schrieb:

    Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

    👍



  • es geht hier um c++,gell?

    Vergiss es. Solange du die Grundlagen nicht kannst (und zu den Grundlagen gehört mehr als schon mal ne Klasse erstellt zu haben!), hat es keinen Sinn, sich mit Oberflächen zu beschäftigen.



  • Tuxinator schrieb:

    es geht hier um c++,gell?

    Vergiss es. Solange du die Grundlagen nicht kannst (und zu den Grundlagen gehört mehr als schon mal ne Klasse erstellt zu haben!), hat es keinen Sinn, sich mit Oberflächen zu beschäftigen.

    Ja genau, und deshalb sind Klassen fundamental, also überdenke deinen Beitrag besser nochmal.



  • Tuxinator schrieb:

    es geht hier um c++,gell?

    Vergiss es. Solange du die Grundlagen nicht kannst (und zu den Grundlagen gehört mehr als schon mal ne Klasse erstellt zu haben!), hat es keinen Sinn, sich mit Oberflächen zu beschäftigen.

    Jap.

    Ich guck mal, was ich noch hinzufüge/entferne. Mein Ziel ist es nämlich nicht, eine große Sammlung zu erstellen, in dem möglichst viele häufig gestellte Fragen beantwortet werden (dafür sind schließlich die FAQ da), sondern einen kleinen Text zu schreiben, der wenn möglich nur das Wichtigste enthält.

    Alle Änderungen nehm ich im OP vor.



  • IMHO solltest du, wenn du das schon machst, vllt. die Top 10 der meistgestellten Fragen rausfinden und in einem Post mit den entsprechenden Einträgen der FAQ verlinken, also:

    1. Warum verschwindet mein Konsolenfenster sofort?
      ...


  • .filmor schrieb:

    Die drei Zeilen werden in dem Artikel aber sinnvoll in eine Funktion gepackt, die dann sehr leicht verständlich ist.

    Was wenn der Anfänger noch nicht (eigene) Funktionen gehabt hat? Ich seh hier meistens nur Leute die cin.get() und system("PAUSE") benutzen, und das wahrscheinlich auch deswegen, weil ihnen der Code aus der FAQ nicht ganz klar wird. Die Funktion wait() muss ja noch in der main-Funktion aufgerufen werden (und zwar vor return, wer noch keine Funktionen hat, weiß das vielleicht auch nicht).
    Auch finde ich es total lästig, immer ein wait() an allen meinen programm-abbrüchen einzufügen. Und bei einem assert oder /0 bringst ja dann sowieso nichts mehr.
    Deswegen: Was spricht denn dagegen? Man könnte diese IDE-Tipps ja nur als Empfehlung hinschreiben und nichts als zwingende Aufforderung.

    mfg.



  • Zu Punkt 6: IMHO müsste es heissen "Die Standardbibliothek arbeitet mit const char*", jedenfalls in dem Zusammenhang.



  • Hallo

    Michael E. schrieb:

    void main()
    // ersetzen durch:
    int main()
    
    #include <iostream.h>
    // ersetzen durch:
    #include <iostream>
    using namespace std;	// analog dazu: <string.h> -> <string>
    
    #include <stdio.h>
    // ersetzen durch:
    #include <cstdio>
    using namespace std;	// analog dazu: assert.h, ctype.h, locale.h, time.h, math.h und weitere
    

    <string.h> wird doch aber nicht zu <string>, sondern zu <cstring>.

    chrische



  • Hm, ich würd's sinnvoller finden (wegen redundanz u. übersichtlichkeit), wen man im C++-Froum soetwas wie einen "Indexthread" zum FAQ sticky macht in welchem man für bestimmte Probleme auf den/die passende(n) FAQ Threads verweist. Dann würde man sich nämlich die Posts sparen, in denen wieder 'mal jemand meint, er habe in der FAQ gesucht und gesucht und doch nix gefunden (obwohl der Rest der Welt weiß, daß dort steht was er sucht).

    Greetz, Swordfish

    @chrische: mein ich auch!!


  • Mod

    Swordfish schrieb:

    Hm, ich würd's sinnvoller finden (wegen redundanz u. übersichtlichkeit), wen man im C++-Froum soetwas wie einen "Indexthread" zum FAQ sticky macht in welchem man für bestimmte Probleme auf den/die passende(n) FAQ Threads verweist. Dann würde man sich nämlich die Posts sparen, in denen wieder 'mal jemand meint, er habe in der FAQ gesucht und gesucht und doch nix gefunden (obwohl der Rest der Welt weiß, daß dort steht was er sucht).

    Greetz, Swordfish

    @chrische: mein ich auch!!

    stiime zu. man kann ja abwägen: wenn die frage in einer zeile zu beantworten ist, kann man sie hier beantworten, sonst nimmt man einen link.



  • Hab noch ne Idee bzgl. des eigentlichen Themas, dieses Threads:

    8. C nicht mit C++ vermischen:

    Beispiel a) Casts:

    fstream fStr("C:\\demo.dat");
    // ...
    unsigned long ulNummer;
    fStr.read(reinterpret_cast<char*>(&ulNummer), sizeof(unsigned long)); // C++
    // und nicht:
    // fStr.read((char*)&ulNummer), sizeof(unsigned long)); // C
    // ...
    

    Beispiel b) File Handling:

    // Filestreams statt FILE-Structs
    fstream fStr(...); // C++
    // und nicht:
    // FILE *pFile; // C
    

    Beispiel c) Speicherreservierung:

    // new statt malloc und Kohorten
    Typ* tName= new Typ[Anzahl]; // C++
    // und nicht:
    // Typ* tName = (Typ*)malloc(Anzahl * sizeof(Typ)); // C
    

    oder findet ihrs nit so wichtig...? -> Feedback please 😉

    Edit: @camper, gute Idee! 👍 ...bzgl. der Ptr is mir nur nix anderes eingefallen 🙄


  • Mod

    CodeFinder schrieb:

    Hab noch ne Idee bzgl. des eigentlichen Themas, dieses Threads:

    8. C nicht mit C++ vermischen:

    Beispiel a) Casts:

    int i;
    long l = 2344234;
    i = static_cast<int>(l); // C++
    // und nicht:
    // i = (int)l; // C
    

    Beispiel b) File Handling:

    // Filestreams statt FILE-Structs
    fstream fStr(...); // C++
    // und nicht:
    // FILE *pFile; // C
    

    oder findet ihrs nit so wichtig...? -> Feedback please 😉

    gute idee. dann darf auch malloc(und konsorten)->new nicht fehlen.

    edit: bei den C-casts besser ein weniger kontroverses beispiel (also irgendwas was leicht ins auge geht, am besten mit pointern) wählen.


Anmelden zum Antworten