Hallo, ich habe folgende Problemstellung. Ich habe für unterschiedliche Indexe eines Arrays unterschiedliche Anzahl an Strings. Dazu siehe folgendes Beispiel: Index 1: "String1", "String2" Index 2: "String3" Nun möchte ich diese Informationen in ein Array packen. Dazu habe ich folgenden Code zur Initialisierung: const char* varString1[] = {"String1", "String2"}; const char* varString3[] = {"String3"}; const char** variable[] = { varString1, varString3, }; Ich habe nun ein Array variable, das für jeden Index unterschiedliche Längen haben kann. Gucke ich mir die Variablen varString1 und varString3 im Speicher an so muss ich feststellen, dass diese im RAM stehen. Was muss ich ändern, damit die Variablen im ROM stehen. Vielen Dank im voraus für eure Hilfe! Grüße Basti
vielleicht Tutorial lesen oder die Suchfunktion bemühen? Möglicherweise hatte schon mal jemand ein entfernt ähnliches Problem...
Also ich habe in den Tutorials und mit Hilfe der Suchfunktionen nichts brauchbares gefunden: Ich habe die Lösung aber hier gefunden: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka9590.html Also der Code muss folgendermaßen aussehen: const char* const varString1[] = {"String1", "String2"}; const char* const varString3[] = {"String3"}; const char* const* variable[] = { varString1, varString3, };
Aha, es geht also um einen ARM-Prozessor. Nächstes Mal wäre es nett, wenn du das dazuschreiben würdest. Klaus ist vermutlich (wie die meisten hier, wenn nichts explizit angegeben ist) von einem AVR ausgegangen, für den das im Tutorial beschrieben ist, aber ganz anders funktioniert.
Um es genau zu sagen ging es um einen v850 Controller aber das tut eigentlich nichts zur Sache. ;-) Dieses Beispiel sollte mit jedem Compiler (also auch Controller )laufen also auch mit einem AVM, ARM usw. Oder sehe ich da was falsch ???? :-O Grüße Basti
Basti schrieb: > Um es genau zu sagen ging es um einen v850 Controller aber das tut > eigentlich nichts zur Sache. ;-) > > Dieses Beispiel sollte mit jedem Compiler (also auch Controller )laufen > also auch mit einem AVM, ARM usw. Oder sehe ich da was falsch ???? :-O Du siehst das insofern falsch, als es in C eigentlich kein RAM oder ROM gibt. Insofern ist nicht gesagt, dass etwas das const ist, in einem 'ROM' landet. Ob das so ist und wie das genau funktioniert, definiert dein Compiler und nicht die Sprache C.
Basti schrieb: > Um es genau zu sagen ging es um einen v850 Controller aber das tut > eigentlich nichts zur Sache. ;-) > > Dieses Beispiel sollte mit jedem Compiler (also auch Controller )laufen > also auch mit einem AVM, ARM usw. Oder sehe ich da was falsch ???? :-O Zu dem, was Karl Heinz geschrieben hat, kommt noch dazu, daß z.B. der AVR separate Adressräume für RAM und Flash hat, auf die auf Assembler-Ebene mit unterschiedlichen Instruktionen zugegriffen werden muß. Daher reicht da ein einfaches const nicht aus.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.