GCC-Fehler: declaration of … shadows a parameter

English Deutsch

Problem:

Du triffst auf eine GCC-Fehlermeldung der Form

shadowing_error.txt
error: declaration of ... shadows a parameter

Irgendwo in deinem Code hast du eine Funktion mit einem Argument

shadow_example.cpp
void doSomething(int arg) {/*...*/}

Irgendwo in der Funktion möchtest du jedoch eine Variable deklarieren, die denselben Namen hat wie eines der Funktionsargumente.

Das Deklarieren einer Variablen mit einem Namen, der bereits auf eine andere Variable verweist, wird als Shadowing bezeichnet. In diesem Fall überschattest du ein Funktionsargument.

Zum Beispiel, in

shadow_example.c
void doSomething(int arg) {
 char* arg = "";
}

überschattet char* arg das Funktionsargument int arg

Ursache identifizieren:

Die Datei und die Zeilennummer verweisen auf die Deklaration der Variablen, die das Argument überschattet.

Fehler beheben:

Benenne die Variable um, die das Argument überschattet, oder benenne das Argument selbst um.

Im obigen Beispiel müsstest du entweder char arg umbenennen (z.B. in char arg2) oder int arg.


Check out similar posts by category: Allgemein