[C++Warnung] USB.cpp(16): 'tempPipe' is assigned a value that is never used.
-
DWORD USB::ValidInstances(DWORD max_count) { HANDLE tempPipe = INVALID_HANDLE_VALUE; DWORD count = 0; for(int i = 0; i < MAX_NUM_MPUSB_DEV; i++) { tempPipe = MPUSBOpen(i, // input, DWORD, instance number of the device to open vid_pid, // input, PCHAR, VID&PID value of the target device NULL, // input, PCHAR, endpoint number on the target endpoint to open MP_READ, // input, DWORD, specifies the direction of the endpoint 0); // input, DWORD, <future use> if(tempPipe != INVALID_HANDLE_VALUE) { selection = i; MPUSBClose(tempPipe); count++; } if(count == max_count) break; } return selection; }
Warum bringt mir der Compiler die im Titel angegebene Warning? Ich benutze doch die Variable tempPipe
lg,
blitzgeist
-
Der erste Befehl in der Schleife ist die Zuweisung an 'tempPipe' - das heißt egal was passiert, der in der Initialisierung vorgegebene Wert wird niemals genutzt (also kannst du die Initialisierung auch ausfallen lassen).
-
blitzgeist schrieb:
Warum bringt mir der Compiler die im Titel angegebene Warning? Ich benutze doch die Variable tempPipe
Das ist schon richtig so. Du weist der Variable einen Wert zu, der niemals verwendet wird. Der Wert, den Du in Zeile 3 zuweist, wird in Zeile 7 gändert, ohne das der bisherige Wert überprüft wird. Die Zuweisung in Zeile 3 ist in diesem Fall also überflüssig, das ist alles, was der Compiler Dir sagen will.
-
Aber das ist doch bei der Varibale count genauso. Ich initialisiere sie mit 0, aber eine Abfrage auf 0 wird nie durchgeführt.
-
Nein ist es nicht. Du initialisierst diese mit 0 und das nächste ist eine simple Rechenoperation, die auf die Variable angwendet wird. Das würde ohne die Initialisierung schief gehen. Und auch das merkt der Compiler.
Der Wert der Variable tempPipe wird, im Gegensatz zu count, komplett überschrieben.
-
Ok, danke für deine Erklärung