Ich bekomme diese WarnungC++ Kürzungs konstanter Wert
warning C4309: 'initializing' : truncation of constant value
und wenn ich versuche, meine dll auszuführen sendet er nur 4 Bytes statt der 10 Bytes.
Was könnte falsch sein?
Hier ist mein Code:
int WINAPI MySend(SOCKET s, const char* buf, int len, int flags)
{
cout << "[SEND:" << len << "] ";
for (int i = 0; i < len; i++) {
printf("%02x ", static_cast<unsigned char>(buf[i]));
}
printf("\n");
//causing the warning:
char storagepkt[] = {0x0A, 0x00, 0x01, 0x40, 0x79, 0xEA, 0x60, 0x1D, 0x6B, 0x3E};
buf = storagepkt;
len = sizeof(storagepkt);
return pSend(s, buf, len, flags);
}
UPDATE
int (WINAPI *pSend)(SOCKET s, const char* buf, int len, int flags) = send;
int WINAPI MySend(SOCKET s, const char* buf, int len, int flags);
UPDATE
Wie schlug ich versuchte Memcpy:
memcpy((char*) buf, storagepkt, sizeof(storagepkt));
UPDATE
unsigned char storagepkt[] = {0x0A, 0x00, 0x01, 0x40, 0x79, 0xEA, 0x60, 0x1D, 0x6B, 0x3E};
es behoben.
Der Code ruft 'pSend()' auf, aber das wird nicht angezeigt. Stattdessen ist 'MySend()'. Gibt es einen Tippfehler oder fehlt etwas? – wallyk
Ich benutze Umleitungen. beide werden erklärt :) – madziikoy
@wallyk 'pSend' wird von innen' MySend' aufgerufen –