@ Walter (Gast)
>ich benutze einen C8051 und möchte beispielsweise von einem struct ganz>viele Variablen als Konstante in den Flash legen.>typedef struct{> uint8_t u8Nummer;>} s_Test;
Schechtes Beispiel, ein Struct mit nur einer Variabel ist sinnlos.
>code s_Test data[100];>Gibt es nun einen eleganteren Welt als den folgenden?>code s_Test data[] = {> 0,1,2,3,[...],99>};
Das IST der elegante Weg!
>Im Sinne von>code s_Test data[0] = {0};>code s_Test data[1] = {1};
Das ist der naive Anfängerweg.
Die Initialisierung einer Konstanten muss ein in sich geschlossenes
Statement sein - ansonsten wäre es keine Konstante sondern eine Variable
(und muss in einem RAM liegen).
Ansonsten gäbe es Möglichkeiten das etwas aufzuhübschen, etwa mit
sprechenden Member Namen der Struct.
Walter schrieb:> Variablen als Konstante
Als was nun, konstant oder variabel ?
Walter schrieb:> Gibt es nun einen eleganteren Welt als den folgenden?
Der ist doch sehr elegant, extrem wenig arbeitsaufwändig, und wird mit
dem Programm gleich mit reinprogrammiert. Was will man mehr ?
Trollfrage ?
Falk B. schrieb:>>Gibt es nun einen eleganteren Welt als den folgenden?>>code s_Test data[] = {>> 0,1,2,3,[...],99>>};>> Das IST der elegante Weg!
Sollte das nicht eigentlich
Struktur-Arrays lassen sich wie folgt initialisieren:
1
typedefstruct
2
{
3
uint8_tfoo;
4
uint8_tbar;
5
}s_Test;
6
7
codes_Testtestarray[]=
8
{
9
{1,2},
10
{1,0},
11
{2,1}
12
};
Zwar kann man die Klammern um die Einzelstrukturen auch weglassen, das
aber wird schnell unübersichtlich.
Die C99-Initialisierung sollte sich wie folgt anwenden lassen können:
Jim M. schrieb:> Funktioniert aber nicht mit Arrays
Doch das geht auch mit Arrays, musst die einzelnen Elemente einfach
nochmals in geschweifte Klammern kapseln.