Variablenname erhöhen

Gast #2227644
Lesenswert?

Hallo ich habe folgendes Problem.

Ich möchte einer Hand voll(große Hand) Variablen vom Datentyp uint8 
Werte zuweisen. Die, ich nenn sie mal, Startwerte befinden sich im ROM.

ich bin wie folgt vorgegangen (die ganzen Deklarationen lass ich mal 
außen vor)

uint8 i;

for(i=erste_konstante; i<letze_konstante, i++)
{
     variable[i] = romvariable[i];
}

Der punkt wo es hakt leigt bei "romvariable&i"

also in Worten ausgedrückt ich möchte Variable1 die Romvariable1 
zuweisen. Dies natürlich gerne über die For-Schleife damit ich nicht für 
alle

Variable1 = Romvariable1;
Variable2 = Romvariable2;
Variable3 = Romvariable3;
Variable4 = Romvariable4;

händisch machen muss.

Hat jemand eine Idee ich komme gerade nicht weiter.

mfg
Gast #2227658
Lesenswert?

beginner schrieb:
> Der punkt wo es hakt leigt bei "romvariable&i"
Den Punkt sehe ich nirgends in deinem nichts-sagenden 
Quellcode-Mini-Schnippsel.
EDIT: Hat sich erledigt.

Und was hakt da?
Wie sieht es mit Fehlermeldungen aus?
Bist du auf einem µC?
Werden die Werte auch wirklich aus dem (EEP)ROM ausgelesen?

Die Fehlerbeschreibung und die Randbedingungen sind ziemlich dürftig.
#2227660
Lesenswert?

beginner schrieb:
> also in Worten ausgedrückt ich möchte Variable1 die Romvariable1
> zuweisen. Dies natürlich gerne über die For-Schleife damit ich nicht für
> alle
>
> Variable1 = Romvariable1;
> Variable2 = Romvariable2;
> Variable3 = Romvariable3;
> Variable4 = Romvariable4;
>
> händisch machen muss.

hänge in obige Aussage überall um die Zahlen ein [ ], und Du hast das 
Resultat vom Code, den Du geschrieben hast. Und Dein Problem gelöst.
Gast #2227672
Lesenswert?

Um zu versuchen den Grund für die Verwirrung hier mal ein bisschen 
direkter auf den Punkt zu bringen:

Du schreibst:

>...über die For-Schleife ...

und hast auch den Code dafür hier:
1
for(i=erste_konstante; i<letze_konstante, i++)
2
{
3
     variable[i] = romvariable[i];
4
}

D.h. Du hast genau den Code für den Zweck, nach dem Du hier fragst, 
schon vorliegen. Was ist also das Problem?
Gast #2227686
Lesenswert?

Klaus schrieb:
> Um zu versuchen den Grund für die Verwirrung hier mal ein bisschen
> direkter auf den Punkt zu bringen:
>
> Du schreibst:
>
>>...über die For-Schleife ...
>
> und hast auch den Code dafür hier:
> for(i=erste_konstante; i<letze_konstante, i++)
> {
>      variable[i] = romvariable[i];
> }
>
> D.h. Du hast genau den Code für den Zweck, nach dem Du hier fragst,
> schon vorliegen. Was ist also das Problem?


Da hat sich ein kleiner Fehler eingeschlichen: vor "i++" gehört ein ";" 
und kein ",".

Gruß


Fnord
#2227819
Lesenswert?

Klaus schrieb:
> variable[i] = romvariable[i];

"romvariable" ist natürlich keine Variable, sondern, da sie im ROM steht 
eine Konstante. Diesen konstanten Wert kannst du den Variablen aber auch 
zum Zeitpunkt der Compilierung zuweisen:

unsigned char variable[] = {8, 27, 43, 1, 222};

und gut ist.

Das Anlegen eines Arrays im ROM (Flash) ist in diesem Fall nur unnötiger 
Ballast, genauso wie das Umkopieren zur Laufzeit an irgendeiner Stelle 
des Programms. Und unübersichtlicher ist es auch.

mfg.
#2227838
Lesenswert?

Nicht unbedingt. Die Konstanten stehen so oder so im ROM, und es kann 
durchaus weniger Code verbrauchen, wenn sie dort explizit als Feld 
deklariert sind.
Wie es im einzelnen ausgeht, kommt auch noch auf den Compiler und dessen 
Einstellungen an.
Völlig hinfällig wird dein Vorschlag, wenn zur Programmlaufzeit die 
Startwerte teilweise nochmals geladen werden müssen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren