Aufbau einer Menüstruktur
-
Ich habe folgendes programm
struct tMenue
{
char Text[50];
struct tMenue *v;
struct tMenue *n;
};int main ( void )
{struct tMenue *p;
struct tMenue Ebene2_1[3]
={{"Eintrag_1_1",Ebene1,NULL},{"Eintrag_2_1",Ebene1,NULL},{NULL,Ebene1,NULL}};struct tMenue Ebene1[4]
={{"Eintrag_1",NULL,Ebene2_1},{"Eintrag_2",NULL,NULL},{"Eintrag_3",NULL,NULL},{NULL,NULL,NULL}};
...Menübaum
Ebene 1: Eintrag_1; Eintrag_2; Eintrag_3
Ebene 2: Eintrag_1_1; Eintrag 1_2; Eintrag_2_1; Eintrag_3_1tMenue ist eines Struktur welche einen Pointer ihres Types, auf eine Nachfolgende Struktur und auf eine vorherige Struktur beinhaltet.
somit lässt sich leicht eine Menüstruktur realisieren zumindes gieng das so in PascalProblem:
Bei der Initialisierung von Ebene2_1 muss ich die Adresse der übergeordneten Ebene angeben, diese wird aber erst Später im Programm declariert und initialisiert d.h die Adresse dieser Ebene ist erst später im Programm bekannt.Gibt es eine Möglichkeit vielleicht so eine art Prototyp zu erstellen, damit der Compiler zu dem Zeitpunkt die Adressen aller noch folgenden Variablen schon kennt kennt?
-
versuch mal so:
struct tMenue { const char *Text; const struct tMenue *v; const struct tMenue *n; }; extern const struct tMenue Ebene1[4]; const struct tMenue Ebene2_1[3] = { {"Eintrag_1_1",Ebene1,NULL}, {"Eintrag_2_1",Ebene1,NULL}, {NULL,Ebene1,NULL} }; const struct tMenue Ebene1[4] = { {"Eintrag_1",NULL,Ebene2_1}, {"Eintrag_2",NULL,NULL}, {"Eintrag_3",NULL,NULL}, {NULL,NULL,NULL} };
aber ausserhalb der funktion.
könnte klappen...
-
Danke funktioniert
-
Eine frage hätte ich noch..
was für ein zweck erfüllt eigendlich dieses 'extern' vor 'const'?
Hab ich auch in Headerdateien schon öfters gesehen, hat mir bloß nch niemand erklären können.. selbst mein informatik lehrer nicht ..
-
...zumindest dachte ich immer, dass 'extern' bedeutet, auf globale variablen zu verweisen.
aber aus welchem grund wurde es im obigen programmbeispiel verwendt?
-
Martin Lang schrieb:
...zumindest dachte ich immer, dass 'extern' bedeutet, auf globale variablen zu verweisen.
aber aus welchem grund wurde es im obigen programmbeispiel verwendt?mit 'extern' kann man einem compiler sagen, dass es das objekt schon irgendwo gibt und wie es aussieht. ob es in einer anderen datei steht oder in der gleichen, in der das 'extern' auftaucht, ist egal...