Problem mit struct

Gast #521175
Lesenswert?
• ▲
▼
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
#521221
Lesenswert?
• ▲
▼
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 #521229
Lesenswert?
• ▲
▼
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
Gast #521247
Lesenswert?
• ▲
▼
"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

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.

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.