Eine Warnung erhalten, wenn eine variable ist beschattet
Ich wollen in der Regel vermeiden Sie code wie diesen:
#include <stdio.h>
int main(int argc, char *argv[]){
int n = 3;
for (int n = 1; n <= 10; n++){
printf("%d\n", n);
}
printf("%d\n", n);
}
Wie finde ich die Verwendung von Variablen? Das bedeutet, dass in der gleichen Funktion einer "lokalen" variable den gleichen Namen wie eine Globale variable?
C-Standard : C 99
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide gcc-und clang-Unterstützung der
-Wshadow
Flagge, die warnen, dass Variablen, die Schatten einer anderen. Zum Beispiel die Warnung, die ich erhalten vongcc
für Ihr code ist der folgende:gcc
Dokumente die Flagge hier und sagt:In Visual Studio dieses sieht wie es vorher nicht möglich war aber scheint behoben zu sein in den letzten Versionen.
Bezweifelte ich dies, wenn ich es das erste mal sah, so musste ich für mich selbst sehen, sagen Sie mir, dass Sie nicht bekommen, diese Warnungen sofort?
Dies wird vorausgesetzt, Sie sind mit gcc ohne -std-compiler-flag (C90-Modus).
Könnte Sie geben Sie Ihre compiler-flags?
for
Schleifen; die Neudefinition Fehler ist ein Nebeneffekt. Kompilieren mit-std=c99
und der Fehler Weg. Und Sie gehen davon aus, das OP ist mit dem gcc Compiler.