void zeiger kann nicht konvertiert werden...



  • struct test
    {
      int x;
      int y;
      int width;
      int height;
    };
    
    struct test x;
    void* y = &x;
    struct test* z = (struct test*)y;
    

    Ich versuche in diesem test-code ein Objekt zu erstellen, dann es an void-zeiger zu übergeben und dann von void-zeiger zu einem objekt-zeiger...
    Letzte Zeile klappt leider nicht - ich verstehe nicht warum...

    PS: ich muß einen void-zeiger haben, der nicht konstant ist...



  • Geht's ein wenig präziser als "klappt leider nicht"?



  • ok...

    benutze GCC - da steht dann:

    error: initializer element is not constant



  • Schreib deinen Testcode besser in eine Funktion.



  • hm...

    ach ja... ich wollte eine DLL Datei erstellen...
    Hab die Zeilen ausser Struct in Funktion gepackt - und hatte ähnliche Probleme...

    Wenn ich Consolen-Programm erstelle, dann klappt es 100%ig:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct test
    {
      int x;
      int y;
      int width;
      int height;
    };
    
    int main()
    {
        struct test x;
        void* y = &x;
        struct test* z = (struct test*)y;
    
        printf("Hello world!\n");
        return 0;
    }
    

    woran liegt es nun...?



  • TheShadow2000 schrieb:

    ach ja... ich wollte eine DLL Datei erstellen...
    Hab die Zeilen ausser Struct in Funktion gepackt - und hatte ähnliche Probleme...

    Geht's ein wenig präziser als "ähnliche Probleme"?

    Wenn ich Consolen-Programm erstelle, dann klappt es 100%ig:

    Super. Leider hilft das nicht bei der Lösung deines Problems.

    woran liegt es nun...?

    Woran liegt was? Beschreib doch mal das eigentliche Problem. Ohne funktionierenden oder "Test"-Code.



  • "error: initializer element is not constant"

    Ich würde einfach mal schätzen, dass gcc es nicht mag, wenn du globale Variablen für solche Spielereien verwendest.



  • hm... hab das problem nun entdeckt - es lag dadran, dass ich diese codes vom hauptprogramm aus ausführte....

    wenn ich diese in funktion packe und dann mit einem anderen programm die dll starte, dann ist es ohne Fehler...

    zuvor hab ich etwas C++ gecodet und ich meine dort sind solche Codes ausserhalb von Funktionen erlaubt (fragezeichen) ansonsten stimmt was mit meinem Compiler nicht...


Anmelden zum Antworten