Frage

Ok, das feine compiliert in GCC unter Linux.

char * _v3_get_msg_string(void *offset, uint16_t *len) {/*{{{*/
    char *s;
    memcpy(len, offset, 2);
    *len = ntohs(*len);
    s = malloc(*len+1);
    memset(s, 0, *len+1);
    memcpy(s, offset+2, *len);
    s[*len] = '\0';
    *len+=2;
    return s;
}/*}}}*/

Aber ich habe ein Problem, das es auf Windows, aufgrund der Linie portiert ...

memcpy(s, offset+2, *len);

Als ein void-Zeiger, VC ++ will nicht den Zeiger auf Offset. Der üblicher Vorbehalt, dass CPP erlaubt keine Zeiger Offsets strittig sein sollte, da das gesamte Projekt wird unter extern „C“ gebaut.

Nun, dies ist nur 1 Funktion in vielen, und dazu die Antwort zu finden, wird sie erlauben, alle festgelegt werden. Ich würde wirklich lieber nicht das Bibliotheksprojekt von Grund auf neu zu schreiben, und ich will nicht unter MinGW bauen. Es muss ein Weg, dies zu tun, dass ich fehle, und die Suche nicht in Google.

War es hilfreich?

Lösung

Nun, man kann nicht Zeiger arithmetics mit void * tun, es ist lächerlich, dass diese kompiliert unter GCC. versuchen memcpy(s, ((char*)offset)+2,*len);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top