power-poler
Goto Top

Funktion wird trotz Prüfung auf ungleich NULL ausgeführt

Hallo
Habe da ein kleines großes Problem, bei dem ich jetzt komplet auf dem Schlauch stehe wo der fehler liegt.
Habe folgende Zeilen code:
void removeblock(struct _block* B){
	if(B!=NULL){
	setpoint(B->eins->P,0,' ');  
	setpoint(B->zwei->P,0,' ');  
	setpoint(B->drei->P,0,' ');  
	setpoint(B->vier->P,0,' ');  
	}
}

Ich Prüfe ob der Zeiger Ungleich NULL ist, und führe dan die Funktion aus.
Doch die Funktion wird auch ausgeführt wenn der Zeiger = NULL ist.
B 0x003b8a40 {eins=0xfeeefeee {P={X=??? Y=??? } color=??? zeichen=??? } zwei=0xfeeefeee {P={X=??? Y=??? } ...} ...} _block *
Kann sein das ich nur wider irgendwo einen Denkfehler mache.
Aber eigentlich dürfte er doch nicht die Funktion ausführen.
Sorry, wenn die frage dämlich klingt, aber ich hänge jetzt sei 1Stunde ein dieser Zeile code, und ich hab inzwischen einfach das Gefühl, das das Programm macht was es will.
Also die Bedingungen mal ignoriert mal berücksichtigt.

Schonmal Danke für eine Antwort.

Content-Key: 231983

Url: https://administrator.de/contentid/231983

Printed on: April 19, 2024 at 09:04 o'clock

Member: colinardo
colinardo Mar 07, 2014 updated at 12:34:26 (UTC)
Goto Top
schon mal so ausprobiert (C++)?
if ( B != nullptr ) {
..
..
}
auch mal Leerzeichen vor und hinter dem Vergleichsoperator lassen
Grüße Uwe
Member: Power-Poler
Power-Poler Mar 07, 2014 at 12:46:00 (UTC)
Goto Top
Will er auch nicht.
Die Funktion wird immer noch ausgeführt.
Konnte den Fehler inzwischen aber eingrenzen. (Weshalb überhaupt ein NULL Block entfernt werden soll.)
Wenn die If Bedingung nur das machen würde was sie soll, könnte ich mir jetzt aber auch die ganzen Änderungen sparen...
Member: Power-Poler
Power-Poler Mar 07, 2014 at 12:59:34 (UTC)
Goto Top
Danke für die Links, werde ich mir mal anschauen.
Aber hab das Problem jetzt gefunden, weshalb ein Block mit NULL entfernt werden sollte.
Diese Möglichkeit hab ich jetzt ausgeschlossen, sodass eigentlich nur noch gültige werte an removeblock übergeben werden sollte.
Member: rubberman
rubberman Mar 07, 2014 at 17:04:25 (UTC)
Goto Top
Hallo Power-Poler,

gut dass du den Fehler anderweitig eingegrenzt hast, ABER das if Statement ist eindeutig. Heißt, der Pointer war nicht NULL und dein Fehler liegt/lag nicht in der geposteten Funktion.

Grüße
rubberman