www.mikrocontroller.net

Forum: Compiler & IDEs Was sagt mir diese Warnung


Autor: benny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hier habe ich einen Code-Schnipsel
#include <avr/pgmspace.h>

typedef struct {
  const char s[2][20];
  const int i;
} TT;  

const TT aa[] PROGMEM = {
  'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a',
  'b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b',
  2356
};  

bei dem ich immer folgende Warnungen bekomme:

../main.c:261: warning: missing braces around initializer
../main.c:261: warning: (near initialization for 'aa[0]')

Weiß jemand Rat?

Autor: Ralf Schwarz (spacedog) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
const TT aa PROGMEM = {
  {
    {'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a'},
    {'b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b'}
  },
  2356
};

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
benny wrote:
> Hi,
>
> hier habe ich einen Code-Schnipsel
> [...]
> bei dem ich immer folgende Warnungen bekomme:
>
> ../main.c:261: warning: missing braces around initializer
> ../main.c:261: warning: (near initialization for 'aa[0]')
Und völlig zu Recht.
#include <avr/pgmspace.h>

typedef struct {
  const char s[2][20];
  const int i;
} TT;

const TT aa[] PROGMEM = {
  {
    {
      {
        'a','a','a','a','a',
        'a','a','a','a','a',
        'a','a','a','a','a',
        'a','a','a','a','a'
      },
      {
        'b','b','b','b','b',
        'b','b','b','b','b',
        'b','b','b','b','b',
        'b','b','b','b','b'
      }
    },
    2356
  }
};

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Deklaration hat 3 Hierarchieebenen:
- struct
- array[2]
- array[20]
und folglich sollte das sinngemäss so aussehen:
= {{{'a'..'a'},{'b'..'b}},2356};

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. wrote:
> Deine Deklaration hat 3 Hierarchieebenen:
> - struct
> - array[2]
> - array[20]
> und folglich sollte das sinngemäss so aussehen:
> = {{{'a'..'a'},{'b'..'b}},2356};
Vorsicht, das ganze Ding ist nochmal ein Vektor :-)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yep, den hatte ich übersehen.

Autor: Ralf Schwarz (spacedog) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven Pauli wrote:
> const TT aa[] PR...

Vorsicht 2: Die eckigen Klammern nach dem aa müssen natürlich weg.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso?

Autor: Ralf Schwarz (spacedog) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil das Teil ja kein Array ist und auch kein Struct-Array, sondern nur 
ein einfaches Struct, halt mit nem zweidimensionalen Array drin (komme 
selber bald nicht mehr draus).

Autor: benny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nee,

die eckigen Klammern nach dem aa werden noch gebraucht. Auch wenn ich 
hier nur ein Element eingetragen habe, sollen es noch ganz viele werden 
;-)

Autor: Ralf Schwarz (spacedog) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so, ja klar.

Dann kommt aber nochmals ein Satz geschweifte Klammer drumrum, so wie 
bei Sven Pauli, welcher natürlich vollkommen Recht hat mit seiner 
Lösung.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.