[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 🙂


Anmelden zum Antworten