Struktur initialiseren mit 0 gefüllt
-
Hallo zusammen,
ich würde gerne folgende Struktur initialisieren mit dem Programmstart und dabei erstmal alle Werte zu Null setzen.
struct RouteStruct { //public: int iNoWpts; // Number of Waypoints in active Route long lNoWptCou; // Number of current Waypoint double dLatitude[MAXELEFPLN]; // Degrees; decimal double dLongitude[MAXELEFPLN]; // Degrees; decimal double dPAltitude[MAXELEFPLN]; // Meters over MSL double dPSpeed[MAXELEFPLN]; // Meters/Second }RouteStruct;Da nicht immer gewährleistet ist, dass die Daten vorhanden sind (werden übers Netzwerk zur verfügung gestellt), und um für den Fall, dass keine Daten da sind einen Programmabsturz zu verhindern.
Ich dachte zuerst an die letzte Zeile so "}RouteStruct = { 0 };" zu schreiben bzw. "double dLongitude[MAXELEFPLN]=0;", aber das wird auch mit einem Programmabsturz beantwortet.
Vielleicht hat jemand eine bessere Idee;) Vielen Dank schonmal.
gruß,sebastian
-
Musst du ein POD-Layout haben? Dann wäre vielleicht
memset()etwas. Sonst könntest du einen Konstruktor schreiben.P.S. Willst du Typ- und Variablennamen nicht unterschiedlich benennen?
-
"}RouteStruct = { 0 };"
darf nicht crashen. welchen compiler verwendest du?
-
Ich arbeite mit Visual Studio. Das crashed auch nicht, also das Compilieren funktioniert korrekt, aber wenn ich das Tool starte stürzt es ab.
-
Wo wird der Kram denn definiert? Innerhalb eines Namenraumes oder innerhalb einer Funktion? Im ersten Fall musst Du gar nichts dafür tun. Das Ding wird "statisch" mit Nullen initialisiert. Im zweiten Fall bedarf es einer Initialisierungsliste (
={0};oder sogar={};).Gruß,
SP
-
Sebastian Pizer schrieb:
={0};oder sogar={};Ist beides dasselbe.
-
hey man, du brauchst ne variable:
RouteStruct var = {0};
!
-
@variabl0r: wie darf ich das verstehen?
Ich möchte dann erreichen, dass alle Werte Null sind, aber mit einer Variablen?
Die Struktur wird für die Kommunikation verwendet und wenn das andere Ende Daten sendet tut mein Programm auch, aber wenn keine kommen stürzt es ab. Und dies möchte ich abfangen durch Null setzen aller Werte.
-
Und warum ignorierst du Fragen?
-
hage2001 schrieb:
@variabl0r: wie darf ich das verstehen?
Ich möchte dann erreichen, dass alle Werte Null sind, aber mit einer Variablen?
Die Struktur wird für die Kommunikation verwendet und wenn das andere Ende Daten sendet tut mein Programm auch, aber wenn keine kommen stürzt es ab. Und dies möchte ich abfangen durch Null setzen aller Werte.Du kannst alle Elemente einer Struktur, die durch eine Strukturvariable adressiert werden können, direkt beim Initialisieren auf 0 setzen:
RouteStruct var = {0};
Damit wird var.iNoWpts=0, var.lNoWptCou=0, ..., usw.
Später, im Programmverlauf geht das nicht mehr, da musst du entweder alle Elemente einzelnd 0 setzen, oder memset benutzen: memset(&var,0,sizeof(struct test));Gruß,
v.
-
{0} ist aus C- Kompatibilitätsgründen noch gültig.
In C++ kann man mit {} den POD mit Nullen initialisieren.
Und mit {0,3,4} die 3 Member mit den Werten 0,3,4 befüllen.Simon
-
Wo wird der Kram denn definiert? Innerhalb eines Namenraumes oder innerhalb einer Funktion?
Die Struktur ist in einer Header-Datei. Aufgerufen wird das ganze in der Main-Datei in einer Funktion. Dort wird das ganze dann mit einer Schleife in ein Array übergeben und dieses Array dient der weiteren Arbeit.
-
Wo wird der Kram denn definiert? Innerhalb eines Namenraumes oder innerhalb einer Funktion?
Die Struktur ist in einer Header-Datei. Aufgerufen wird das ganze in der Main-Datei in einer Funktion. Dort wird das ganze dann mit einer Schleife in ein Array übergeben und dieses Array dient der weiteren Arbeit.