Forum: Compiler & IDEs Fehler beim Compiler: subscripted value is neither array.


von Loipe (Gast)


Lesenswert?

Hallo,

ich habe folgenden Codeausschnitt:

unsigned long Zeitbasis;
unsigned char ID;

void Schalten (void)
{
   ...
   Zeitbasis = Basis_def(ID);
   ...
}

unsigned long Basis_def (unsigned char ID)
{
   unsigned long Basis;
   ...
   Basis = 123456;
   ...
   return Basis

}

Der Compiler bringt mir dann folgenden Fehler:
error: subscripted value is neither array nor pointer
Der Fehler bezieht sich auf die Zeile "Zeitbasis = Basis_def(ID);"
Wo ist das Problem ?

Danke

Gruß Alex

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Der Code enthält mindestens zwei Probleme

Dieser Code kompiliert...
1
unsigned long Zeitbasis;
2
unsigned char ID;
3
4
unsigned long Basis_def (unsigned char ID)
5
{
6
   unsigned long Basis;
7
   // ...
8
   Basis = 123456;
9
   // ...
10
   return Basis; // <==
11
}
12
13
void Schalten (void)
14
{
15
   // ...
16
   Zeitbasis = Basis_def(ID);
17
   // ...
18
}
19
20
int main(void)
21
{
22
   Schalten();
23
   return 0;
24
}

von Andreas K. (a-k)


Lesenswert?

Es ist dir gelungen, den Code extra für uns so übersichtlich zu 
gestalten, dass auch der Fehler nicht mehr enthalten ist.

Bring mal ein minimiertes Beispiel, dass man durch den Compiler jagen 
kann. Wobei ganz hilfreich wäre, zu erfahren welchen Compiler man dazu 
verwenden sollte.

von Loipe (Gast)


Lesenswert?

Also dann nochmal,

ich habe in meinen AVR Studio folgendes eingegeben:
1
unsigned long Zeitbasis;
2
unsigned char ID;
3
4
5
unsigned long Basis_def(unsigned char ID)
6
{
7
  unsigned long Basis;
8
  Basis = 23456;
9
  return Basis;  
10
}
11
12
void Port_schalten(unsigned char ID)
13
{
14
  Zeitbasis = Basis_def[ID];
15
}
16
17
int main (void)
18
{
19
  ID = 5;
20
  Port_schalten(ID);
21
  return 0;
22
}

Bei Make Vorgang mit WINAVR Version 25.5.2007 kommt folgende Meldung

Build started 20.1.2008 at 19:49:00
../2138-10.c: In function 'Port_schalten':
../2138-10.c:14: error: subscripted value is neither array nor pointer
make: *** [2138-10.o] Error 1
Build failed with 1 errors and 0 warnings...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Basis_def ist eine Funktion, du versuchst aber, sie als Array
(mit eckigen Klammern []) zuzugreifen.

Wahrscheinlich wolltest du schreiben:
1
Zeitbasis = Basis_def(ID);

um dir Funktion aufzurufen.

von Loipe (Gast)


Lesenswert?

Danke für die Antwort,

bin gerade selbst draufgekommen.
So ein misst aber auch. Da habe ich jetzt wegen einen Tippfehler wieder 
eine halbe Stunde verschissen.

Gruß Alex

von Oliver (Gast)


Lesenswert?

>Da habe ich jetzt wegen einen Tippfehler wieder
>eine halbe Stunde verschissen.

Hast du nicht. DIESEN Fehler machst du mit Sicherheit nie wieder - und 
dafür ist die halbe Stunde doch gut investiert, oder?

Oliver

von Rolf Magnus (Gast)


Lesenswert?

Hoffentlich macht er auch den Fehler nicht nochmal, irgendwelchen frisch 
eingetippten Pseudocode statt per Copy/Paste den echten Code zu posten.
Im Ursprungsposting war der Fehler mit den Klammern nicht enthalten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.