Hallo,
Folgendes Problem:
Global angelegte Instanzen funktioniern nicht.
Ich habe eine Klasse angelegt, mit einer öffentlichen Funktion. Es geht
nicht um die Funktion der Klasse da diese nur zum Debuggen dient und
daher sehr einfach gehalten ist.
Die Klasse sieht so aus:
Header:
1 | class Test
|
2 | {
|
3 | private:
|
4 | int al,bl;
|
5 |
|
6 | public:
|
7 | Test(int a, int b);
|
8 | void Write(int a, int b);
|
9 | };
|
CPP
1 | void Test::Write(int a, int b)
|
2 | {
|
3 | al=a+1;
|
4 | bl=b+1;
|
5 | }
|
6 |
|
7 | Test::Test(int a, int b)
|
8 | {
|
9 | Write(a, b);
|
10 | }
|
Erzeuge ich eine Instanz der Klasse innerhalb einer Funktion dann
funktioniert das auch einwandfrei.
Beispiel:
1 | int main(void)
|
2 | {
|
3 | Test t1(1,1);
|
4 | while (1) asm volatile("nop");
|
5 | }
|
Erzeuge ich die Instanz global sieht es für mich so aus als ob die
Rücksprungadresse für den Return nicht mehr passt und er springt
irgendwo im Programm hin und das Programm läuft nicht mehr.
Beispiel:
1 | Test t1(1,1);
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | while (1) asm volatile("nop");
|
6 | }
|
Muss man wenn man C++ verwendet noch spezielle Speicherbereiche
initialisieren?
Oder ist das vielleicht ein Bug von g++ da OOP für µCs nicht vorgesehen
ist?
Ich verwende AVRStudio 5.0
Würde mich für zahlreiche Ideen und Tipps freuen ;)
Der Fehler lässt sich mit dem angegebenen Quellcode nachstellen.