Struktur von Arrays

OP #2109446
Freitag Abend und ich hock vor'm Rechner
n'Abend an alle

Die angehängte Datei ist vorerst zweitraning

Die aufgeschlagene Buchseite
http://openbook.galileocomputing.de/c_von_a_bis_z/015_c_strukturen_006.htm#mj558e0e4fc0892fc3f91cd810f7c07860
1
void Eingabe(int nr, struct adres neu[])

funktioniert im Visual Studio

möchte ich auf meinen Atmega 16 portierne
AVR Studio 4.18

meine Codezeile die ich eben nach Buch angepasst habe
1
void verstellen(int nr, struct wecken neu[] )
in Zeile 83 des Dateianhangs

und hier erhalte ich folgende Fehlermeldung

../A8_LCD_T2.c:83: error: array type has incomplete element type

Danke schon mal
Angehängte Dateien:
Reihenfolge:

Geh dein File von oben nach unten durch, so wie es auch der Compiler 
macht.

1
Geplänken, Geplänkel, Geplänkel
2

3
void verstellen(int nr, struct wecken neu[]);

Hier verwendest du eine Struktur namesns wecken. Aber wo ist sie 
definiert?
1
int main()
2
{
3

4
  Geplänkel, Geplänkel, Geplänkel
5

6

7
// Meine erste Stuctur soll die Weckzeiten der gesamten Woche aufnehmen aufnehmen 
8
  struct wecken
9
  {  
10
    uint8_t tag;
11
    uint8_t stunde;                      
12
    uint8_t minute;                        
13
  }morgen[7];

Aha. Hier ist sie definiert. Aber da ist es zu spät. Du versuchst sie 
schon weiter oben zu verwenden.

Wenn man den Code von oben nach unten durchgeht, muss alles 
definiert/deklariert werden, ehe man es verwenden kann. Genau so macht 
es auch der Compiler. Der sucht sich nicht aus dem Code heraus, wie das 
alles zusammenhängt, sondern er liest den Text von oben nach unten.
OP
Danke für den Tip, ist wenn man draufgestoßen wird vollkommen klar.

jetzt
1
char aktuelleUhrzeit( uint8_t sekunde, uint8_t minute, uint8_t stunde);
2
char weckzeit(uint8_t minute, uint8_t stunde, uint8_t tag);
3

4
// Meine erste Stuctur soll die Weckzeiten der gesamten Woche aufnehmen aufnehmen 
5
  struct wecken
6
  {  
7
    uint8_t tag;
8
    uint8_t stunde;                      
9
    uint8_t minute;                        
10
  }morgen[7];
11
// A C H T U N G   auch hier kann ein "einZuVielFehler" auftretten Index beginnt bei 0 ... 6
12

13
void verstellen(int nr, struct wecken neu[]);

nachdem die "struct" vor der main deklariert wurde ist sie doch global??
AH!
Das könnte der Grund sein warum Ihr Proficoder die Funktionen vor der 
main erzeugt.
Im Gegensatz zum Schul C Bekannt machen  und nach der main erzeugen.

Jetzt brennt mir aber eine weiter Frage auf den Lippen.
1
void verstellen(int nr, struct wecken neu[]);
ist die "int nr" in der
1
#include <string.h>
 irgenwie festgelegt ?
Diese Variable läßt der COmpiler einfach passieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.