array mit unterschiedlichen Dimensionen in C

Gast #2506514
Lesenswert?

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
Gast #2506516
Lesenswert?

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,
};
Gast #2506537
Lesenswert?

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
#2506602
Lesenswert?

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.
Gast #2506973
Lesenswert?

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.

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