Initialization bei 'normalem' .cpp file.



  • Hoi zusammen.

    Ich bin gerade bei einem Delphi file auf folgendes gestossen (das File ist KEINE Klasse);

    initialization
    mutexTKH := TMutex.Create('TKH_INSERTS_CODE');
    sharedMemTKH := TSharedMem.Create('SHM_TKHINSERTS', sizeof(KitConvoierType));

    Sprich, sobald er die Unit reinlädt, wird dies ausgeführt.
    Gibts das auch in cpp, ohne dass ich eine Klasse benutze und den Konstruktor ausführe?

    Gruss,
    dane



  • Mhh, wie jetzt? So?

    void machWas() {}
    
    int main()
    {
      machWas();
    }
    


  • Hallo,

    verstehe ich das richtig so:
    Sobald ich irgendein header file includiere wird SOFORT der main() - Part beim entsprechenden .cpp File ausgeführt?

    Grz



  • Nein, das verstehst du falsch. Es gibt keinen 'Main-Part', es gibt nur eine einzige Main-Funktion und dort ist der Einstiegspunkt für das Programm.
    Wenn du eine Funktion möglichst früh ausführen willst, dann muss die halt möglichst früh in der main-Funktion stehen (direkt oder indirekt).
    Inkludieren musst du nur, um die Funktion bekannt zu machen.



  • Hoi,

    Ja das ist mir klar.
    Nur die ausführung von

    mutexTKH := TMutex.Create('TKH_INSERTS_CODE'); 
    sharedMemTKH := TSharedMem.Create('SHM_TKHINSERTS', sizeof(KitConvoierType));
    

    muss dann geschehen, wenn das ganze inkludiert wird.
    So verstehe ich jedenfalls die Funktionsweise von initialization unter Delphi.

    gruss



  • dane_92 schrieb:

    muss dann geschehen, wenn das ganze inkludiert wird.

    In C++ kannst Du nix ausführen "wenn etwas inkludiert wird". Compiletime und Runtime sind 2 verschiedene Dinge. Wenn Du möchtest dass Code dann ausgeführt wird wenn eine Klasse verwendet wird, dann benutze den Constructor. Dafür ist er da.


Anmelden zum Antworten