Problem bei Struct

Gast #2303849
Lesenswert?

Hallo,

Ich möchte folgenden Code in eine *.h Datei packen, bekomme aber immer 
einen Error:
1
#ifndef font_6x8_h
2
#define font_6x8_h
3

4

5

6

7
struct font_6x8
8
{
9
                
10
  unsigned char font_6x8_hoehe 8;
11
  unsigned char font_6x8_breite 6;
12
};
13

14

15
#endif

Der Error ist:
../Font_6x8.h:10: error: expected ':', ',', ';', '}' or '__attribute__' 
before numeric constant


Kann mir da jemand weiterhelfen? Das ganze wird mit AVRStudio erstellt.
Gast #2303851
Lesenswert?

Am besten liest Du mal ein C-Buch.

Aber in der Zwischenzeit:
1
struct font_6x8
2
{
3
                
4
  unsigned char font_6x8_hoehe 8;
5
  unsigned char font_6x8_breite 6;
6
};

Ist erstmal, abgesehen von dem syntaktischen Fehler mit den Zahlen nur 
eine Struktur-Deklaration. Nichts sonst. Es wird kein Speicherplatz 
reserviert. Das ist, falls das letztlich eine Initalisierung sein soll, 
Dein zweiter Fehler.

Also:
1
struct font_6x8
2
{
3
                
4
  unsigned char font_6x8_hoehe;
5
  unsigned char font_6x8_breite;
6
};

ist erstmal eine korrekte Deklaration.

Nun, definieren wir noch eine Variable mit dieser Struktur.
1
struct font_6x8
2
{
3
                
4
  unsigned char font_6x8_hoehe;
5
  unsigned char font_6x8_breite;
6
} StrukturVariable;

Und zu guter letzt initialisieren wir sie:
1
struct font_6x8
2
{
3
                
4
  unsigned char font_6x8_hoehe;
5
  unsigned char font_6x8_breite;
6
} StrukturVariable = { 8, 6 };

So. Und wenn Du das ganze nochmal nachliest, dann wäre mir das sehr 
angenehm.
Gast #2304321
Lesenswert?

Stimmt so ging das, hatte ich schon wieder vergessen aber vielen Dank 
für die ausführliche Erklärung:)

Jetzt stehe ich aber vor einem anderen Problem, und zwar habe ich mir 
meine Schrift erstellt wie folgt:
1
static unsigned char font_6x8[] PROGMEM =   {       
2
        0x06                            //Breite
3
        0x08                            //Höhe
4
        0x00,0x44,0x7E,0x7E,0x40,0x00,  //1
5
        0x00,0x44,0x62,0x52,0x4C,0x00,  //2
6
        0x00,0x24,0x42,0x5A,0x24,0x00,  //3
7
        0x00,0x1E,0x10,0x78,0x10,0x00,  //4
8
        0x00,0x4E,0x4C,0x4C,0x32,0x00,  //5
9
        };

Je nach Schrift die ich verwenden möchte, möchte ich einer Funktion 
einen anderen Parameter übergeben.
Kann ich das mit Pointern realisieren?
Meine Version sieht bis jetzt so aus:
1
void put_char(unsigned char print_char, unsigned char xpos, unsigned char ypos,unsigned char *font)
2
{
3
  unsigned char breite;
4
  unsigned char hoehe;
5
  
6
  breite = font[0];
7
  hoehe = font[1];
8
}
Und die Funktion wird wie folgt aufgerufen:
1
put_char('2',0,16,font_6x8);

Aber leider stimmen die Werte für breite und höhe dann nicht.
Weiß auch leider nicht was ich ändern muss, hab schon viel ausprobiert:/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren