struct - problem



  • N'Abend
    Ich habe mir nen Struct zusammengestellt, das eben Daten aufnimmt. Dann erstelle ich mir davon ein Derivat aber als Array. Also:

    struct KEYS
    {
        HKEY hRoot;
        char *szPath;
        char *szName;
        char *szValue;
    };
    
    KEYS cdkey[7];
    

    Wenn ich jetzt jedoch versuche diese Derivate zu füllen, kommt immer, dass cdkey bereits deklariert wurde bzw. schon wieder deklariert wird:

    cdkey[0].hRoot = HKEY_LOCAL_MACHINE;
    cdkey[0].szPath = "...";
    cdkey[0].szName = "...";
    cdkey[0].szValue = "";
    
    cdkey[1].hRoot = HKEY_LOCAL_MACHINE;
    cdkey[1].szPath = "...";
    cdkey[1].szName = "...";
    cdkey[1].szValue = "";
    .
    .
    .
    

    Ich verstehe absolut nicht warum. Ich habe alle Header includiert und auch sonst auf eigentlich alles geachtet. Ich hatte mit structs bisher nie Probleme, bis eben jetzt.

    DIV Ominion



  • Hallo

    Dein gezeigter Codeauschnitt ist soweit in Ordnung. Die Fehlermeldung steht in Zusammmenhang mit anderen Codeteilen.

    bis bald
    akari



  • cdkey[0].hRoot = HKEY_LOCAL_MACHINE;
    cdkey[0].szPath = "...";
    cdkey[0].szName = "...";
    cdkey[0].szValue = "";
    
    cdkey[1].hRoot = HKEY_LOCAL_MACHINE;
    cdkey[1].szPath = "...";
    cdkey[1].szName = "...";
    cdkey[1].szValue = "";
    

    Ich hoffe, du versuchst obenstehendes nicht global?

    Vielleicht ist das der Fehler?



  • du wirst wohl recht haben, ich hatte das immer vor main() deklariert. jetzt habe ich es in main reingeschoben -> es geht...find ich nur eigenartig, weil wenn ich "früher" einen struct/class angelegt habe, und gleich danach außerhalb von main() ein paar derivate gebildet habe, hatter er nie ein problem...

    Mfg Ominion



  • @Paul Panther: naja, wie gesagt hatte ich gemacht, war aber vorher nie ein Problem...

    Mfg Ominion



  • Ominion|off schrieb:

    du wirst wohl recht haben, ich hatte das immer vor main() deklariert. jetzt habe ich es in main reingeschoben -> es geht...find ich nur eigenartig, weil wenn ich "früher" einen struct/class angelegt habe, und gleich danach außerhalb von main() ein paar derivate gebildet habe, hatter er nie ein problem...

    Meines Wissens nach darf man im globalen Bereich nur definieren oder deklarieren, kann aber auch sein, dass ich mich irre, oder dass frühere Compiler auch Zuweisungen im globalen Bereich zugelassen haben...

    Die einzige Möglichkeit die mir noch einfallen würde, dass du die entsprechenden Variabeln auch im globalen Bereich belegen kannst, wäre dann wohl über eine Initialisierungsliste, also:

    KEYS cdkey[7] = { {HKEY_LOCAL_MACHINE, "...", "...", ""}, {HKEY_LOCAL_MACHINE, [...] } };
    

    Aber auf jeden fall schön, dass ich helfen konnte...



  • ich glaube bei mir trifft dann eher das mit dem alten compiler zu...habe erst vor einiger zeit gewechselt, seitdem aber keine structs oder classes gebraucht.
    ihr konntet beide helfen...deshalb: danke an euch beide.

    Mfg Ominion


Anmelden zum Antworten