2016-04-05 10 views
0

Ich schreibe Code mit Qt unter Linux (Ubuntu) für ein Embedded-Gerät. Ich ordnete eine Header-Datei mit globalen Variablen Deklaration innerhalb; wenn ich mein Projekt unter Linux auf meinem PC getestet habe, ist alles in Ordnung. Wenn ich mein Projekt mit dem eingebetteten System versuche, funktioniert es manchmal nicht, weil ich vergessen habe, einige Variablen zu initialisieren (scheint, dass Qt auf meinem PC automatisch ihre Werte auf "0" setzt, während sie auf dem eingebetteten System zufällig sein können Wert).Wie initialisiert man die globale Variable für ein eingebettetes Gerät?

Gibt es eine Möglichkeit, alle meine Variablen in einem Schritt zu initialisieren, so dass, wenn ich sie an meine eingebetteten übergeben, die globalen Variablen bereits korrekt initialisiert sind?

+2

Globale Variablen, die initialisiert werden, sind eine C++ - Funktion, keine Qt-Funktion. Nach dem, was Sie gepostet haben, sieht es so aus, als ob Ihr eingebetteter Compiler falschen Code erzeugt. Versuchen Sie, einen Fehlerbericht zu aktualisieren oder zu archivieren. – nwp

+0

Welchen Compiler benutzen Sie? Wie nwp vorschlägt, glaube ich, dass für C++ alle statischen Speichervariablen (wie globale Variablen) standardmäßig auf Null initialisiert werden sollten. –

Antwort

0

Können Sie uns Code zeigen? Wenn Sie globale Variablen verwenden, müssen Sie sie in einer C/C++ Datei definieren und sie hier initialisieren. Die Deklaration in der Kopfzeile sagt nur "Hey! Diese existiert!", Auch wenn nicht ...

+0

Namensraum Ui { Klasse ts400; } Klasse TS400: public QWidget { Q_OBJECT public: TS400 (QWidget * parent = 0); ~ ts400(); quint8 MonoCutModeIndex; quint8 MonoCutModeIndexTemp; // all diese globalen Variablen müssen initialisiert werden; wenn nicht, fand ich sie mit zufälligem Wert in eingebettet. – LittleSaints

+0

Dieser Code ist in Ihrer Kopfzeile (einschließlich globaler Variablen)? Haben Sie die Definition der globalen Variablen in eine cpp-Datei geschrieben? Übrigens sollten Sie in C/C++ nicht davon ausgehen, dass die Variable automatisch initialisiert wird. –

0

Was ich tun möchte, ist sicher zu sein, dass jede globale Variable, die ich in meiner Header-Datei erstellt, mit "0" -Wert initialisiert wird . Gibt es dafür eine Methode, ein Pragma, einen zusätzlichen C++ - Header?

Verwandte Themen