Es ist, wenn Sie etwas tun wie:
%Vor% Worüber es warnt ist, dass index
in main()
tatsächlich versteckt das globale ist, das Sie vor main()
deklariert haben.
Es warnt Sie, dass Sie nicht auf die globale Definition zugreifen können, während die lokale "aktiv" ist. Nun, das ist nicht unbedingt ein Problem (weshalb es nur eine Warnung ist), es ist absolut gültig C, aber Sie müssen sich der möglichen Konsequenzen bewusst sein.
Nebenbei definieren einige C-Implementierungen (BSD-basiert) eine
index
Funktion instring.h
, was ebenfalls ein Problem verursachen kann. Die Verwendung dieser Funktion ist veraltet und erscheint nicht im C-Standard (verwenden Sie stattdessenstrchr
), aber es kann die Ursache von Problemen sein, wenn Sie (zum Beispiel) unter Mac OS oder OpenBSD (oder sogar unter Linux) laufen eine Kombination von#define
Einstellungen, glaube ich).
Es gibt ein paar Möglichkeiten, um dies zu umgehen (wenn Sie müssen).
Das erste ist wahrscheinlich das bevorzugte: verwenden Sie Globals nicht. Ja, das ist richtig, befreie sie. Sie werden sehr selten benötigt, also bring mich nicht dazu, herüber zu kommen und dich zu schlagen :-)
Eine zweite Möglichkeit, die ich gesehen habe, ist sicherzustellen, dass sie "verpackt" sind. Angenommen, Sie benötigen Globals (auf keinen Fall eine Gewissheit, siehe vorherigen Absatz), erstellen Sie eine Struktur, die sie enthält, wie im Folgenden:
%Vor% Das hat den Vorteil, dass es offensichtlich ist, dass Sie sich auf eine globale Variable beziehen und diese nie versteckt werden, es sei denn, Sie definieren Ihre eigene lokale Variable namens myGlobs
.
Tags und Links c