Problem mit struct

Gast #521175
Hallo!

Ich möchte wegen der besseren Übersicht ein struct verwenden.
Leider scheint der GCC-Compiler damit nich zurecht zu kommen.
Hier mal der Code:
1
struct font
2
{
3
       uint8_t width;
4
       uint8_t height;
5
};
6

7
struct font smallfont;
8

9
smallfont.width = 5;     //*
10
smallfont.height = 8;    //*

Es kommt dieser Fehler, bei den mit "//*" gekenntzeichneten Zeilen 
zustande:
1
error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token

Was mach ich falsch?
Danke
Michael
ahem ...

WO machst Du denn das hier:
1
smallfont.width = 5;
2
smallfont.height = 8;

Das geht vielleicht in Basic, aber in C darfst Du das NUR innerhalb 
einer Funktion machen.

Wenn Du Deine struct initliaisieren willst, dann mach das so:
1
struct font_typ
2
{
3
  uint8_t width;
4
  uint8_t height;
5
};
6

7
struct font_typ smallfont = {5, 8};
P.S.:
Schau Dir mal mein Beispiel oben an. Dort ist in der struct noch ein Ptr 
auf die Graphikdaten. Genauso kannst Du es auch mit Deinem Font machen. 
Dann hast Du Größe und Graphikdaten Deines Fonts nur über Deine struct 
erreichbar:
1
// der Font muss zuerst deklariert werden (oder forward):
2

3
const uint8_t font5x8[]PROGMEM= { 
4
0x00,0x00,0x00,0x00,0x00,  // 0x00
5

6
struct font
7
{
8
  uint8_t width;
9
  uint8_t height;
10
        uint8_t fnt_data[];
11
};
12

13
struct font smallfont = {
14
  5,
15
  8,
16
  font5x8
17
};

Gruß, Stefan
Gast
Hallo!

Ich bin mir ziemlich sicher, dass ich das so auch in C verwenden darf.
Oliver kanns ja auch ohne Fehler compilen.
Kann das jemand bestätigen?

Naja wie auch immer. Das hier funktioniert jetzt scheinbar:
1
struct font_typ smallfont = {5, 8};

Danke dafür! :)

Michael
Dann nimm mal Deinen Code von oben und schreib eine Funktion drumrum:
1
void font_init(void){
2
    smallfont.width = 5;
3
    smallfont.height = 8;
4
}

>Ich bin mir ziemlich sicher

Da ist beim Programmieren eine der häufigsten Fehlerquellen ;-)

Gruß, Stefan
Gast
"Ich bin mir ziemlich sicher, dass ich das so auch in C verwenden darf."
Nö. Darfst du nicht.

"Oliver kanns ja auch ohne Fehler compilen."
Nö. Kann ich nicht. Ich hatte das selbstverständlich innerhalb von 
main() getestet.

Globale Initialisierung geht so:
1
struct font smallfont = {5,8};
Oliver

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.