Startup: Funktion vor Konstruktoren aufrufen?

#3752865
Lesenswert?

Hallo,

ich arbeite mit CooCox und CoOs auf einem STM32. Danke diesem Beitrag 
Beitrag "C++: Warum wird diese Methode nicht aufgerufen?" funktioniert C++ und 
virtuelle Methoden. Ich würde gerne wissen:

Wie / wo werden die Konstruktoren aufgerufen?

Wie kann ich eine Funktion aufrufen lassen bevor die Konstruktoren 
aufgerufen werden? Im konkreten Fall geht es darum dass in den 
Konstruktoren bereits Betriebssystemfunktionen aufgerufen werden, zuvor 
muss aber mit einer Funktion das Betriebssystem initialisiert werden...
Linkerscript und Startupskript sind im Anhang.

Gruß
Stefan
Angehängte Dateien:
Gast #3752938
Lesenswert?

Du meinst die Konstruktoren von globalen Objekten? Da hast du wenig 
Einfluss drauf, auch nicht darauf, in welcher Reihenfolge diese 
aufgerufen werden.

Objekte in der main mit new auf dem Heap erzeugen oder in der main lokal 
auf dem Stack, dann hast du Einfluss. Oder, auch wenn das jetzt 
oberlehrerhaft klingen mag, mal die Codestruktur überdenken, wenn du so 
viel Zeug global rumfliegen hast.
Gast #3752948
Lesenswert?

Ja, die nette static initialization hell :) Wenn es dir weiterhilft, du 
kein malloc machen willst, kannst du dir auch eine eigene Verwaltung 
herstellen, die mittels placement new die objecte zum Zeitpunkt X für 
dich erstellt. Dabei musst du natürlich wissen in welchen 
Speicherbereich, dieser kann aber auch ein vorab alloziiertes Array 
sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren