alle members einer struct wieder auf null setzen ?



  • ok, danke



  • ?¿?

    Nehm doch einfach:

    ZeroMemory(&XXX, sizeof(XXX));
    

    mfg



  • Rashnok schrieb:

    Nehm doch einfach:

    ZeroMemory(&XXX, sizeof(XXX));
    

    warum zum henker sollte er diese obskure ZeroMemory-funktion nehmen, wenn es memset gibt?



  • Öhm, weil er dann ein NULL weniger schreiben muss und auf Grund des Namens klarer ist was er da im Code tut.

    Btw.:

    #define ZeroMemory RtlZeroMemory
    
    #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
    

    Na fällt dir was auf?
    Richtig ZeroMemory und memset is das selbe...



  • Rashnok schrieb:

    Öhm, weil er dann ein NULL weniger schreiben muss und auf Grund des Namens klarer ist was er da im Code tut.

    erstens sollte er 0 schreiben und nicht NULL.
    zweitens zieht man als halbwegs brauchbarer programmierer immer standardisierte funktionen gegenüber plattformspezifischen vor, insbesondere wenn beide das gleiche leisten.
    drittens, jeder der c oder c++ einigermaßen beherrscht, weiß was memset tut.
    viertens: "weniger schreiben" ist ein echt mieser grund, vom standard abzuweichen.



  • Ich benutze auch gern ZeroMemory, eben weil es etwas weniger Tipparbeit ist. 😉
    Und da wir mit dem BCB sowieso nur für Windows programmieren, kann man auch ruhig OS-spezifische Funktionen verwenden. Ich seh da auf jeden Fall keinen Nachteil.



  • memset(bereich,0,laenge);
    vs.
    ZeroMemory(bereich,laenge);
    

    Was ist denn nun weniger Tiparbeit?



  • Na ja, so gesehen hast Du recht, aber ich zum Ziffernschreiben muß ich auf das Num-Pad wechseln und das dauert bei mir länger, als das ZeroMemory zu tippen. 😉
    Wenn ich also die Bewegungen der Finger und Hand betrachte ist es weniger zurückgelegter Weg. Ich weiß, die Ziffern gibt es auch noch in der obersten Reihe der Tastatur, aber da treff ich nie die, die ich haben wollte. Aber wie schon gesagt, eigentlich hast Du recht und nur aus meiner persönlichen Unzulänglichkeit ergibt sich die Ausnahme.



  • Joe_M. schrieb:

    Na ja, so gesehen hast Du recht, aber ich zum Ziffernschreiben muß ich auf das Num-Pad wechseln und das dauert bei mir länger, als das ZeroMemory zu tippen. 😉

    ein vorschlag, mit dem in dem fall wohl alle glücklich wären:

    inline void zeromem(void* mem, std::size_t size)
    {
      std::memset(mem, 0, size);
    }
    

    kürzer, außerdem kein shift für Z und M notwendig, portabel.



  • cpt. obvious schrieb:

    erstens sollte er 0 schreiben und nicht NULL.
    zweitens zieht man als halbwegs brauchbarer programmierer immer standardisierte funktionen gegenüber plattformspezifischen vor, insbesondere wenn beide das gleiche leisten.
    drittens, jeder der c oder c++ einigermaßen beherrscht, weiß was memset tut.
    viertens: "weniger schreiben" ist ein echt mieser grund, vom standard abzuweichen.

    Heute mit nem falschen Fuß aufgestanden? Naja...nix für ungut, jedem das seine, auch wenn ich anscheinend nichtmal ein halbwegs brauchbarer Programmierer bin. SOllte mir vielleicht nen neuen Job suchen... 😞



  • Rashnok schrieb:

    Heute mit nem falschen Fuß aufgestanden?

    nö, dein ratschlag war halt einfach nur ziemlich schlecht.

    Rashnok schrieb:

    SOllte mir vielleicht nen neuen Job suchen... 😞

    oder dran arbeiten, ein brauchbarer programmierer zu werden. :p


Anmelden zum Antworten