msp430-gcc C++ globale Objekte

Gast #721108
Lesenswert?
• ▲
▼
Hallo.
Ich habe ein Problem: Ich kann keine globalen Objekte von Klassen 
erstellen. Zwar meckert der Compiler/Linker nicht, aber das ausfuehren 
von Methoden globaler Objekte fuehrt zum Absturz. Ich vermute, dass die 
Konstruktoren der Objekte in der Startup-Routine nicht ausgefuehrt 
werden. Der Code an sich ist in Ordnung, lokale erstellte Objekte 
funktionieren einwandfrei.

Ich benutzte das aktuelle Windows Package vom mspgcc.

Hat sich hier schonmal jemand an C++ mit dem mspgcc gewagt, und ist auf 
gleiche Probleme gestossen, bzw. wenn es diese Probleme nicht gab, 
welche mspgcc Version wurde benutzt?

Danke im Vorraus.
#721303
Lesenswert?
• ▲
▼
Wie gcc das löst, weiß ich nicht. Andere Compiler (MSC, Borland) legen 
üblicherweise einen Funktionspointervektor an, dessen Pointer von der 
Runtime-Initialisierungsroutine der Reihe nach aufgerufen werden. Der 
Prozeß endet, wenn ein NULL-Pointer gefunden wird. (Für die globalen 
Destruktoren funktioniert es genauso, nachdem main terminiert hat.)

Wenn keine Runtime-Initialisierung vom Linker zum Programm gebunden 
wird, werden diese Initialisierungen nicht ausgeführt.

Die Runtime-Initialisierungsroutine wird vor main ausgeführt.

Notfalls mußt du eben mal den Objektcode untersuchen und dir selbst 
sowas schreiben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.