2017-10-29 1 views
1

ich ein bestimmtes Stück Code sahFunktionsargumente werden als Anweisungen verwendet

Int SensorxyzOpen(SensorHandle   *handle_ptr, 
         struct SensorCallback *client_callback_ptr, 
         BOOL      testcalibrated, 
         void      *contextptr) 
{ 
(void)handle_ptr; 
(void)client_callback_ptr; 
(void)testcalibrated; 
(void)contextptr; 

return ERROR_NOT_SUPPORTED; 
} 

Was diese Funktion tut?

+2

Diese Referenzen machen wirklich nichts. Sie sind wahrscheinlich da, um "Argument nicht verwendet" Warnungen vom Compiler zu vermeiden. –

Antwort

1

Diese Aussagen haben keine wirklichen Auswirkungen Wie können die Funktionsargumente als Anweisungen verwendet werden. (void)variable Es ist nur ein Weg, beschwert sich über nicht verwendeten Variablen zu vermeiden vom Compiler. Casting zu void es ist eine Möglichkeit, eine Variable auf eine harmlose Art und Weise zu referenzieren, d. H. Ohne Nebenwirkungen zu verursachen und trotzdem die Warnungen stumm zu machen. Beachten Sie, dass einige Compiler die Variable nicht verwendete Warnung stumm schalten und den Wert nicht verwendeten Wert Warnung erhöhen, da der Wert zwar referenziert, aber nicht verwendet wird.

Ich habe Leute Sachen verwenden auch wie variable1=variable1 wie Selbstzuordnung gesehen.


Als Nebenwirkung beachten Sie, dass, um nicht verwendete Variable Warnungen für bestimmte Variablen stumm zu schalten und Sie verwenden gcc oder clang Sie einen Funktionsparameter mit __attribute__((unused)) dekorieren kann, wie im folgenden Beispiel gezeigt:

int foo (__attribute__((unused)) int no_warning, double raise_a_warning) { 
    return 0; 
} 
Verwandte Themen