Forum: Compiler & IDEs avr-gcc const struct initialisieren mit const array


von test (Gast)


Lesenswert?

Hallo,
exemplarisch möchte ein struct:

-graphic.h-
1
typedef const struct{
2
uint8_t width;
3
uint8_t height;
4
uint8_t rowPixel[];
5
}graphic;
-logo.c-
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <stdlib.h>
4
#include <stdint.h>
5
6
#include "graphic.h"
7
8
const uint8_t Bild[4*2] = {255,0,255,0,255,0,255,0}
9
10
graphic xyz = [4, 2, Bild];
1
Error  5  initializer element is not computable at load time
Funktioniert dies nur mit

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Die Initialisierung passt nicht zum Typ: Die dritte Komponente muß sein
1
const uint8_t *rowPixel;

Und ja, es macht einen Unterschied ob da steht uint8_t x[] oder 
uint8_t *x.


Das typedef brauch nicht const sein; es genügt wenn es die 
entsprechenden Variablen sind.

von test (Gast)


Lesenswert?

Danke, aber hatte ich auch schon probiert.

Das hat mich auf die Idee gebracht, dass der Fehler evtl. nicht an 
meinem Code liegt.
Also wieder auf Ursprung zurück und in den header der in der main 
routine vorher aufgerufen wird reingeschaut.
Der Kollege hatte dort beim letzten Funktions Prototypen das ";" 
vergessen :(

-> das nächste mal erste Fehlermeldung ordentlich lesen/verstehen

graphic xyz = [4, 2, Bild];
war natürlich auch: graphic xyz = {4, 2, Bild[]};

Aber korrekt wäre es dann ja auch immer noch nicht gewesen ...
Heute nicht mein Tag.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.