Anfänger ?



  • Du steigerst dich da etwas zu sehr hinein, finde ich. Ich hatte dich übrigens auch nicht als Anfänger bezeichnet, sondern hab nur versucht zu erklären, wie so eine Beurteilung aus meiner Sicht zustandkommen würde. Das ist alles nicht böse gemeint.



  • @biter sagte in Anfänger ?:

    Und wieso sollte man nicht _fcloseall() verwenden ?

    Ich versucht das zu erklären:
    https://www.c-plusplus.net/forum/topic/348876/verhalten-von-fcloseall-und-dessen-einsatzgebiet



  • Also bei meinem Programm gibt es ein EVA Prinzip. Nach der Ausgabe rufe ich _fcloseall() auf. Dann wartet das Programm auf eine Eingabe und öffnet dann die Dateien mit fopen neu. Also kein undefinierter FILE Pointer. Was ich gesehen habe, ist dass fcloseall() vor 4 Jahren durch _fcloseall() ersetzt worden ist. Sonst müsste ich halt eine Datenstruktur durchlaufen und jeweils fclose aufrufen. Das Programm läuft schon ewig, es gab noch nie Probleme.



  • Wie sollte ich dann meine Dateien schliessen ?



  • @biter sagte in Anfänger ?:

    Wie sollte ich dann meine Dateien schliessen ?

    Einzeln und präzise, anstatt mit der groben Kelle.



  • @biter sagte in Anfänger ?:

    Das Programm läuft schon ewig, es gab noch nie Probleme.

    Wenn ich jedes mal einen Cent bekommen hätte, nachdem ich den Satz hier gelesen habe, würde ich längst nicht mehr Honda fahren....

    Du bist kein so mieser Entwickler, aber du musst echt lernen zuzuhören. Du wiederholst immer wieder den gleichen Unsinn, den andere versuchen, dir in drei verschiedenen Threads auszureden. Es geht nicht darum, ob dein Quellcode funktioniert.



  • Dann lass den dummen Satz halt weg, und geb mir sonst eine Antwort. Und dass man in eine Situation kommen kann wo man alle geöffneten Dateien schliessen muss das bezweifelt Ihr wahrscheinlich nicht. Ob ich jetzt nur eine schliessen muss oder zehn. Bei _FCLOSEALL() habt Ihr mir einen rekursiven Weg gezeigt, preprocess, bei mir geht das iterativ den schreibe ich nicht mehr um. Dann liegen die File-Pointer eben in einem Stack, und soll sie alle schliessen ( Wenn das Programm auf einen Syntaxfehler stösst ) Den Stack durchlaufen und sie einzeln schliessen,ist das gleiche wie _fcloseall().



  • Es geht momentan nur darum, ob man _fcloseall() verwenden soll oder nicht. Wenn ich eine member die die Dateien schliesst schreibe, dann nenne ich sie eben _fcloseall2(). Und was den dummen Satz angeht, wenn ich ein Programm schreibe, dann muss ich es testen, sehr oft. Wenn Microsoft _fcloseall() eingeführt hat, dann musste Microsoft dieses testen. Und wenn die Tests erfolgreich verlaufen sind, dann gilt es als brauchbar. Und wenn es nur darum geht, ob _fcloseall() keine Probleme macht dann sind mehrere Tests von nutzen.


  • Gesperrt

    @biter sagte in Anfänger ?:

    Es geht momentan nur darum, ob man _fcloseall() verwenden soll oder nicht.

    Verwende sie, wenn sie in deinem Fall nützlich ist. Wäre _fcloseall() totaler Unsinn, würde es die Funktion gar nicht geben.



  • @RBS2 Blödes Argument!
    In dem fcloseall-Fall kann ich das nicht beurteilen, aber generell kann man sich so natürlich jeden noch so schlechten Code schön reden.



  • mal sehen, wie lange es dauert, bis das hier alles an den _fcloseall-thread angehängt wird.



  • @biter @RBS2
    für mich klingt euer Programmierstil so ein bisschen nach:

    "Ich hab keine Ahnung ob mein Prozess noch irgendwelche Filehandles hat und wo die sind und überhaupt, also nehm ich die große Dampframme und lasse einfach das Betriebssystem die Scheiße aufräumen, die ich durch meine Sturheit und Beratungsresistenz verzapft habe"


  • Gesperrt

    @Jockelx sagte in Anfänger ?:

    @RBS2 Blödes Argument!
    In dem fcloseall-Fall kann ich das nicht beurteilen, aber generell kann man sich so natürlich jeden noch so schlechten Code schön reden.

    Schlecher Code ist für mich zum Beispiel, alle FILE* in einer Schleife zu schließen, anstatt ein Mal fcloseall() aufzurufen.


  • Gesperrt

    @It0101 sagte in Anfänger ?:

    Ich hab keine Ahnung ob mein Prozess noch irgendwelche Filehandles hat und wo die sind und überhaupt, also nehm ich die große Dampframme und lasse einfach das Betriebssystem die Scheiße aufräumen, ...

    Das ist ja das Tolle, wenn man ein OS hat, das sowas kann. 🐱



  • @RBS2 sagte in Anfänger ?:

    @It0101 sagte in Anfänger ?:

    Ich hab keine Ahnung ob mein Prozess noch irgendwelche Filehandles hat und wo die sind und überhaupt, also nehm ich die große Dampframme und lasse einfach das Betriebssystem die Scheiße aufräumen, ...

    Das ist ja das Tolle, wenn man ein OS hat, das sowas kann. 🐱

    Früher oder später geht das schief. Dann baust du noch ein zusätzliches Modul, welches auch ein Filehandle unterhält, denkst aber nicht mehr an deine Dampframme und killst auch noch das Filehandle in dem neuen Modul. Und dann brennt der gbd und deine Birne gleich mit.

    Aber wie gesagt: wenn ihr scheiße bauen wollt, dann kann euch niemand aufhalten, aber heult dann nicht rum, wenn in eurem Datensatz das Anfänger-Bit gesetzt ist.


  • Gesperrt

    @It0101 sagte in Anfänger ?:

    Aber wie gesagt: wenn ihr scheiße bauen wollt, dann kann euch niemand aufhalten

    Das will keiner. Ich sehe bei fcloseall() nur das Problem, dass es global auf den ganzen Prozess wirkt. Wie du schon sagtest, ist fcloseall() nicht so gut, wenn irgendwelche Komponenten noch FILE* haben, von denen man nichts weiß. Aber z.B. in einem Programm, das quasi-simultan (per kooperatives Multitasking) viele Dateien beschreibt, kannst du mit einem einzigen Funktionsaufruf alle Schreib-Buffer flushen und die Dateien schließen. Sehr praktisch, vor allem wenn die Anzahl der Dateien variabel ist.



  • @RBS2
    Klar. Und wenn du in der Küche das Licht ausmachen willst, dann gehst du auch zum FI im Sicherungskasten und reißt den raus.


  • Gesperrt

    @It0101 sagte in Anfänger ?:

    Klar. Und wenn du in der Küche das Licht ausmachen willst, dann gehst du auch zum FI im Sicherungskasten und reißt den raus.

    Ein sehr unpassender vergleich, aber auch das mag manchmal die beste Lösung sein. Zum Beispiel wenn man den Wohnungsschlüssel verloren hat, eine Pizza im Ofen bruzzelt und der Sicherungskasten im Hausflur ist, wo man sich gerade befindet. 🐱



  • das würde aber gar nicht funktionieren, weil der ofen gar nicht über den fi abgesichert wird.


  • Gesperrt

    @Wade1234 sagte in Anfänger ?:

    das würde aber gar nicht funktionieren, weil der ofen gar nicht über den fi abgesichert wird.

    Dann nimmste den Hauptschalter daneben.


Anmelden zum Antworten