2013-07-12 3 views
11

Es gibt 3 (was ich weiß) Möglichkeiten, die Warnung "unbenutzte Variable" zu unterdrücken. Irgendein bestimmter Weg ist besser als andere?Welches ist der beste Weg, um "unbenutzte Variable" Warnung zu unterdrücken

Erste

- (void)testString:(NSString *)testString 
{ 
    (void)testString; 
} 

Zweite

- (void)testString:(NSString *)__unused testString 
{ 

} 

Dritte

- (void)testString:(NSString *)testString 
{ 
    #pragma unused(testString) 
} 
+7

'-Wno-unused-variable' –

+4

Löschen oder kommentieren Sie die nicht verwendeten Teile. –

+6

Der erste, der zu "void" führt, ist der portabelste und idiomatischste Weg. – ouah

Antwort

5

Dies ist der Ansatz, den ich verwenden: cross platform macro for silencing unused variables warning

Es Ihnen ein Makro für jede Plattform nutzen kann (obwohl die Definitionen unterscheiden können, auf dem Compiler abhängig), so dass es ein sehr tragfähiger Ansatz ist Ihre Absicht zum Ausdruck zu beliebte Compiler für C-basierte Sprachen. Bei GCC und Clang ist dies gleichbedeutend mit dem Umschließen Ihres dritten Beispiels (#pragma unused(testString)) in ein Makro.

das Beispiel aus der verknüpften Antwort verwenden:

- (void)testString:(NSString *)testString 
{ 
    MONUnusedParameter(testString); 
} 

ich diesen Ansatz am besten für die Portabilität und Klarheit gefunden habe, im Einsatz mit einem paar ziemlich großen C, C++, ObjC und ObjC++ Codebases.

+1

Ich mag die Idee. Ich hasse linken Einzug #pragma, indem wir das tun, können wir dieses Problem auch lösen. – AAV

+1

@AmitVyawahere haha ​​- ich auch :) – justin

-9

Eine Möglichkeit, es zu tun, ist nur eine Variable pointlessly zuweisen, nachdem es zum Beispiel erklärt wird:

int foo; 
foo = 0; 

Dies sollte die Warnung über nicht verwendete Variablen unterdrücken. Es ist nur eine sinnlose Aufgabe.
Aber sonst würde ich mit ouah zustimmen, die erste Methode ist die zuverlässigste, wenn Sie aus diesen drei wählen müssen.

+3

Sie sollten nicht mehr Speicher reservieren, als Sie nur eine Warnung unterdrücken müssen. – ozgur

+2

Dies ist wahrscheinlich verwirrend für jeden, der Ihren Code später liest. – bdesham

+3

GCC würde auch warnen, dass es gesetzt ist, aber unbenutzt. – OLL

1

Wenn Sie mit GCC kompilieren, können Sie Attributattribute verwenden, um das Attribut 'unused' festzulegen. Wie folgt aus:

int somevar __attribute__((unused)); 

Es funktioniert auch für nicht verwendete Parameter Warnungen (-Wunused-Parameter)

Um es kürzer zu schreiben ich dieses Makro bin mit:

#define _U_ __attribute__((unused)) 

Und erklären, wie diese :

int somevar _U_ ; 
Verwandte Themen