GCC error: declaration of … shadows a parameter


You encounter a GCC error message of the form

error: declaration of ... shadows a parameter

Somewhere in your code you have a function with an argument

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

However, somewhere in the function you want to declare a variable that has the same name as one of the function argument.

Declaring a variable with a name that already refers to another variable is called shadowing. In this case, you shadow a function argument.

For example, in

void doSomething(int arg) {
 char* arg = "";

char* arg shadows the function argument int arg

Identifying the cause:

The file and the line number refer to the declaration of the variable that shadows the argument.

Resolving the error:

Rename the variable that shadows the argument or rename the argument itself

In the above example, you’d need to rename either char arg (e.g. to char arg2) or int arg,