static uint32_t a[20] = {0};
undWas ist der Unterschied zwischen statischen und nicht statischen globalen
uint32_t a[20] = {0};
ich beide im Code verwenden
a[0] = 1;
und so weiter ....
Wenn ich die Variable static
mache und sie benutze, erhalte ich einen Fehler
variable "a" was declared but never referenced
aber wenn ich entferne static
Dinge funktionieren gut. In beiden Fällen ist das Array a
ein globales Array.
Der Fehler ist mit dem MACROS.
Array-Deklaration ist getan und es wird von einigen Plattformen verwendet und ich sehe keinen Fehler darin. Derselbe Code bietet einen Fehler, da diese Deklaration/das Array auf anderen Plattformen nicht verwendet wird.
Meine schlechte !!!!
static uint32_t a[20] = {0};
void func()
{
...............
#ifdef ABC
a[0] = 1;
#endif
................
}
Jetzt kompilieren kein Fehler auf der Plattform ABC kompilieren auf einige nicht ABC-Plattform ein Fehler ist.
Lösung: Wrap global auch unter dem jeweiligen Makro
#ifdef ABC
static uint32_t a[20] = {0};
#endif
"statisch" bedeutet "diese Variable ist nicht _directly_ zugänglich außerhalb der Unit/Datei", aber ich verstehe nicht, warum Sie solche Fehler erhalten –
Wenn Sie einen Fehler erhalten, dass eine Variable deklariert wurde, aber nie verweist, sind die Chancen Sie haben es erklärt, aber nie darauf verwiesen. (Vielleicht haben Sie auf eine andere Variable mit demselben Namen verwiesen.) –
@DavidSchwartz Ja, ich frage mich, was falsch ist. Ich benutze es das gleiche Array in meinem Code. – Gopi