www.mikrocontroller.net

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


Autor: Loipe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code enthält mindestens zwei Probleme

Dieser Code kompiliert...

unsigned long Zeitbasis;
unsigned char ID;

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

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

int main(void)
{
   Schalten();
   return 0;
}


Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Loipe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also dann nochmal,

ich habe in meinen AVR Studio folgendes eingegeben:
unsigned long Zeitbasis;
unsigned char ID;


unsigned long Basis_def(unsigned char ID)
{
  unsigned long Basis;
  Basis = 23456;
  return Basis;  
}

void Port_schalten(unsigned char ID)
{
  Zeitbasis = Basis_def[ID];
}

int main (void)
{
  ID = 5;
  Port_schalten(ID);
  return 0;
}

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...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

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

um dir Funktion aufzurufen.

Autor: Loipe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.