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
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 | }
|
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.
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...
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.
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
>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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.