Was ist eine casted Parameteranweisung in C?

8

in der folgenden Funktion

%Vor%

Was bedeutet die Aussage

? %Vor%

bedeuten?

    
user693986 30.08.2013, 00:20
quelle

4 Antworten

12

Die Anweisung wird zur Laufzeit nicht ausgeführt und führt zu keinem Maschinencode.

Es unterdrückt eine Compiler-Warnung, dass p im Rumpf der Funktion nicht verwendet wird. Dies ist eine portable und sichere Möglichkeit, diese Warnung in einer Vielzahl verschiedener Compiler wie GCC, Clang und Visual C ++ zu unterdrücken.

    
Dietrich Epp 30.08.2013 00:21
quelle
2

"Cast to void " ist ein C-Sprachen-Idiom, das standardmäßig den Compiler und lint Warnungen über nicht verwendete Variablen oder Rückgabewerte unterdrückt.

In diesem Fall teilt Dietrich Epp dem Compiler korrekt mit, dass Sie wissen, dass Sie nicht das Argument p verwenden und Ihnen keine Warnungen "unbenutztes Argument" geben.

Die andere Verwendung dieses Idioms, bei der der Rückgabewert einer Funktion an void übergeben wird, ist die traditionelle Methode, lint oder, noch wichtiger, anderen Programmierern zu sagen, dass Sie eine bewusste Entscheidung getroffen haben, diese nicht zu überprüfen der Rückgabewert einer Funktion. Zum Beispiel:

%Vor%

Würde bedeuten "Ich weiß printf() gibt einen Wert zurück, und ich sollte es wirklich überprüfen, aber ich habe mich entschieden, mich nicht zu kümmern".

    
Emmet 30.08.2013 00:31
quelle
0

Es wird verwendet, um die Warnung vor unbenutzten Funktionsparametern zu vermeiden. Es wird einfach verworfen, tut nichts, außer dass der Ausdruck eine Nebenwirkung hat.

  

C11 §6.3.2.2 void

     

Der (nicht vorhandene) Wert eines void-Ausdrucks (ein Ausdruck, der den Typ void hat) soll nicht   in irgendeiner Weise verwendet werden, und implizite oder explizite Conversions (außer zu void) nicht sein   auf einen solchen Ausdruck angewendet. Wenn ein Ausdruck eines anderen Typs als void ausgewertet wird   Ausdruck, sein Wert oder Bezeichner wird verworfen. (Ein void Ausdruck wird für seine ausgewertet   Nebenwirkungen.)

Eine weitere Möglichkeit, die Warnung vor unbenutzten Funktionsparametern zu vermeiden, ist:

%Vor%     
Yu Hao 30.08.2013 01:04
quelle
0

Der void sagt dem Compiler oder dem Lint keine Warnung. Wenn es eine Variable gibt, die nie benutzt wird, wird der Compiler oder der Lint Vorschlag gelöscht.

Wenn Sie es nicht löschen möchten, können Sie void verwenden. Wie der Link: Wie kann ich "definiert" ausblenden aber nicht verwendet "Warnungen in GCC?

    
user1952216 30.08.2013 01:23
quelle

Tags und Links