Ich peil's einfach nicht...



  • Hallo, ich weiss das die Frage wahrscheinlich 'Super-Noobish' ist und bin mir auch nicht sicher ob ich hier richtig bin.
    Aber irgendwas muss ich machen, nur was? 😕

    int ReadW(FILE *ifp)
    {
    char buff[2];
    int *ppalab=0;
    
    buff[0] = getc(ifp);
    buff[1] = getc(ifp);
    
    ppalab = buff;   //Hier steckt der Wurm drin...
    return *ppalab;
    }
    

    ...und VC++ sagt...

    error C2440: '=' : cannot convert from 'char [4]' to 'long *'
    

    ...kann mir vielleicht einer einen Tip(Tritt) geben! 😉
    Danke schonmal!



  • Was soll denn in "ppalab" nacher drinstehen? Und warum verwendest Du es nicht (damit ist es ja sinnlos)?



  • Was du machst (machen willst) ist böse. Darum lässt dich der Compiler auch nicht kompilieren. Wenn du trotz allem der Meinung bist, das Richtige zu tun, geht das wie folgt:

    char Mem[2];
    int *Ptr = reinterpret_cast<int *>(Mem);
    

    Beachte aber, dass ein int nicht immer die Grösse von zwei chars hat. Dereferenzierung ist also nicht portabel und kann im schlimmsten Fall zum Absturz führen. In den meisten Fällen ist int vier chars breit, du solltest das überprüfen, bevor du weitermachst. ReadW ➡ WORD aus windows.h anstelle von int verwenden...



  • Wenn du die Windowsdatentypen nicht verwenden möchtest kannst du auch einfach short nehmen



  • ...ich wollte mich nur für die schnellen Antworten bedanken!
    Der Fehler ist auch behoben, bzw. es wird keiner mehr gemeldet...
    ...trotzdem geht's nicht. 😞

    Was auch nicht schlimm ist (erstmal), weil ich ein paar Sachen daraus gelernt hab...

    ..."Gute Bücher Kaufen!", "Nichts übernehmen, was man nicht versteht!" und "Lernen! Lernen! Lernen!".

    So das war's...
    ...bis zu nächsten mal 😉


Log in to reply