enum Frage - Geht das überhaupt?



  • Hallo zusammmen,

    ich bins mal wieder. Folgendes Problem:

    ich habe soetwas wie:

    enum {
    ANZAHL = 3,
    ELEM_0 = 2,
    ELEM_1 = 12,
    ELEM_2 = 2
    }

    In meinem Prog will ich nun sagen:

    for(i=0;i<ANZAHL,i++){
    feld[i] = ELEM_i;
    }

    Wobei es halt auch ELEM_10 geben kann, wenn ANZAHL = 10 oder nur ELEM_0 wenn ANZAHL = 1. Geht soetwas, und wenn ja wie?

    mfg

    uwe



  • So, wie du dir das vorgestellt hast, geht es sicher nicht. Der Name des benötigten enum-Wertes muß bereits beim Compilieren feststehen und kann nicht zur Laufzeit zusammengebaut werden. Eventuell könntest du stattdessen mit Arrays arbeiten:

    const int werte[] = {2,12,2,0x0815}
    const int anzahl = sizeof(werte)/sizeof(werte[0]);
    
    ...
    for(i<0;i<anzahl;++i)
      feld[i]=werte[i];
    


  • Hallo CStoll,

    das mit dem Array bringt mich leider nicht so richtig weiter. es soll in einer centralen datei definiert werden können, wieviel elemente es gibt, und für jedes element eine nummer. also eine art konfigdatei. diese konfiguration soll dann genutzt werden um das feld zu initialisieren.

    kann man evtl. über defines das lösen? also das ich statt dessen in eine h datei soetwas mache wie:

    #define ANZAHL = 3
    #define int[][] feld{{0,3},{1,5},{2,3}}
    

    geht sowas?



  • Was meinst du mit "zentrale Konfigurationsdatei"? Ein Header, der überall in deinem Programm eingebunden werden soll? Wenn ja, kannst du die beiden Konstanten 'werte' und 'anzahl' dort reinpacken - oder du arbeitest mit extern.

    (ich bin mir allerdings nicht sicher, ob "extern int werte[];" ohne Größenangabe legal ist)



  • ja genau. so mein ich es. alles klar. werde das probieren. vielen dank. 🙂

    uwe



  • CStoll schrieb:

    W
    (ich bin mir allerdings nicht sicher, ob "extern int werte[];" ohne Größenangabe legal ist)

    das lässt sich jedenfalls compilieren.
    🙂


Log in to reply