Initialisierung von Variabeln?



  • Hallo

    Ich portiere eine alte SW auf den Borland bulider 6.

    Dabei habe ich nun Probleme, das der Compiler Variabeln nicht mit 0 initialisert. Ist das so, oder habe ich was falsch eingestellt?
    Bei den Variabeln handelt es sich um ein struct:

    typedef struct
    {
      unsigned   vgeb;     /* von */
      unsigned   vobj;
      unsigned   vdet;
    
      unsigned   ngeb;     /* nach */
      unsigned   nobj;
      unsigned   ndet;
    
      int        anz;      /* wievielte Verbindung */
    
      long pos;
      int  vorw;   /* Satz aus pos ist vorw„rts zu interpretieren */
    } aglT_VNINDEX;
    
    ....
    
    void vonnacherst_btz(unsigned geb, unsigned obj)
    {
    aglT_VNINDEX  vind;  // wird nicht au 0 initialisert...
    
    // initialiserung von Hand nötig.
    vind.vgeb = 0;
    vind.vobj = 0;
    vind.vdet = 0;
    vind.ngeb = 0;
    vind.nobj = 0;
    vind.ndet = 0;
    
    ....
    
    }
    

    Kann ich etwas angeben, damit alle localen Variablen mit 0 Initialisert werden?

    Vielen Dank für Eure Hilfe!



  • Hallo

    laut C++ Standard werden lokale Variablen und Klassenmember nicht automatisch initialisiert. Schreib eine eigene Init-Funktion bzw. einen Konstruktor mit Initialisierungsliste.

    bis bald
    akari



  • Danke für die schnelle Antwort.
    Wenn ich die Initialiserung auf null überall machen muss ist das eine Menge Arbeit im alten Code!
    Also wenn jemand eine andre Möglichkeit kennt währe ich sehr dnakbar....

    Gruss Felix



  • felix67 schrieb:

    Wenn ich die Initialiserung auf null überall machen muss ist das eine Menge Arbeit im alten Code!

    ... um die du dann wohl leider nicht drum herum kommen wirst ...

    felix67 schrieb:

    Also wenn jemand eine andre Möglichkeit kennt währe ich sehr dnakbar....

    Diese Idee wird dir hier niemand liefern können; außer natürlich, derjenige besitzt einen Compiler, der sich nicht an den Standard hält ...

    In der Regel ist dies ein Fall, in dem man sein Softwarekonzept überdenken sollte; wenn dies bei dir nicht möglich ist (z.B. da Portierung von alter Software), dann kommst du ohne den Mehraufwand beim Tippen imho nicht davon.



  • Wenn es wirlich nur um so simple structs geht, ist vielleicht ein ZeroMemory(&vind, sizeof(vind)); weniger Aufwand.



  • Danke für Eure Hilfe.

    Ich habe begonnen mit memset die Structs auf 0 zu setzen.
    So ist der Aufwnad endlich......

    Schöne Festtag!


Anmelden zum Antworten