15 Stimmen

ungültige Besetzung von argc und argv

Ich sehe mir gerade ein Stück C++-Code an, und die erste Zeile in der Hauptfunktion hat meine Aufmerksamkeit erregt:

int main(int argc, const char* argv[]) {
    (void)argc; (void)argv;
     ...
}

Abgesehen von dieser Zeile werden argc und argv überhaupt nicht verwendet. Warum macht der Autor einen void cast? Könnte es daran liegen, dass der Compiler sich nicht über unbenutzte Variablen beschwert?

19voto

IronMensan Punkte 6590

"Könnte es daran liegen, dass der Compiler sich nicht mehr über unbenutzte Variablen beschwert?"

8voto

Kiril Kirov Punkte 36351

Ja, es geht darum, dem Compiler mitzuteilen, dass er sich nicht über unbenutzte Variablen beschweren soll.

1voto

Tio Pepe Punkte 3031

Wenn Sie die -Werror macht der Compiler alle Warnungen zu Fehlern und bricht die Kompilierung ab. Es ist eine gute Praxis, die -Wall -Werror um alle Inkonsistenzen zu überprüfen.

0voto

Ferruccio Punkte 96076

Ja, um zu verhindern, dass sich der Compiler über unbenutzte Variablen beschwert. In diesem Fall wäre ein besserer Weg:

int main(int, char**) {
    ...
}

Wenn man die Parameter unbenannt lässt, weiß der Compiler, dass sie vorhanden sind, aber nicht verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X