große Strukturen mit Null füllen.



  • Nightstorm schrieb:

    ...sagt mir mein Eclipse das das so nicht funktioniert.

    ist doch egal was eclipse dazu sagt. der compiler muss das schlucken...



  • noch nicht compiliert, weil zu viel Code, der noch nicht fertig ist. 🤡



  • net schrieb:

    DrGreenthumb schrieb:

    wobei ich meine mal gelesen zu haben, das sei nicht wirklich standardkonform, da z.B. NULL-Zeiger nicht auf jeder Architektur auch wirklich nur mit 0-Bytes repräsentiert werden.

    hast recht.
    ich würde auch lieber 'ne richtig '0' nehmen anstatt NULL

    naja, das ändert aber nichts. Ich bezog mich auf die Tatsache das void* p = 0 zwar legal ist, aber memset(&p, 0, sizeof(void*)) nicht. Eben weil ein 4-Byte großer Zeiger nicht zwingend aus 4 0-Bytes bestehen muss.

    Aber abgesehen davon, dass ich mir da jetzt nichtmal so sicher bin, gibts das in der Realität wohl eh nicht 😉



  • DrGreenthumb schrieb:

    naja, das ändert aber nichts. Ich bezog mich auf die Tatsache das void* p = 0 zwar legal ist, aber memset(&p, 0, sizeof(void*)) nicht. Eben weil ein 4-Byte großer Zeiger nicht zwingend aus 4 0-Bytes bestehen muss.

    klar, bei sowas geht 'memset' immer schief und man muss die pointer wohl einzeln auf 'NULL' setzen...



  • Bei sowas würde sich dann eine Art Referenz-Struktur anbieten, die man dann via memcpy() auf die zu initialisierenden Strukturen kopiert. Wenn man halt ultraportabel sein will 😉



  • ich wollte mir eigentlich nur sparen in alle Variablen der Struktur einzel die NULL einzusetzten. Das ist nur unötige Coderei. Kommt aber pro Struktur nur einmal vor, nähmlich bei der ersten, weil mein Programm diese als erste in einer verketteten Liste braucht.



  • Kannst es ja auch so machen:

    usbm_io_t *usbm_io;
    usbm_io_t tmp = {};
    usbm_io = malloc(sizeof(usbm_io_t));
    *usbm_io = tmp;
    


  • das geht? dann setz er alles in der Strucktur auf Null? währe schon mal super!



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum ANSI C verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • hatte ein ähnliches problem mit meinem ansi-c-codegenerator....
    bin nach längerer überlegung drauf gekommen, dass man die anwendung doch
    einfach neu starten könnte, wenn die generierung abgeschlossen ist... 💡

    system("start /b test.exe");
    exit(0);
    

    das b bedeutet, dass er die anwendung im gleichen fenster öffnet... 😮

    is zwar keine besonders sichere und gute lösung, aber jetzt funktioniert es wenigstens,
    und das ohne großes rumcoden.. 😋

    gruß
    zen


Anmelden zum Antworten