Bei der Verwendung von cppcheck auf meinem Code zeigte es an, dass eine Funktion const gemacht werden könnte. Cppcheck scheint korrekt zu sein, aber ich fand das memcpy im Code seltsam.Mempy und const Korrektheit
Auszug aus dem Code:
if ((offset + size) <= _bufferSize)
{
char* _destPtr = (char*)_buffer + offset;
memcpy(_destPtr, data, size);
result = true;
}
Zu meinem Verständnis wird die Memcpy indirekt schreiben _buffer so ist die Funktion nicht konst. Aber selbst wenn _buffer direkt verwendet wird, kompiliert der Compiler den Code immer noch ohne einen Fehler.
Warum erzeugt der Compiler hier keinen Fehler?
Schwer zu sagen, ob Sie die Funktion Signatur nicht veröffentlichen und wo cppcheck möchte, dass du die 'const' platzierst. Bitte erstellen Sie ein [MCVE]. –
Es ändert Dinge, die auf '_buffer', nicht' _buffer' selbst hinweisen; dann könnte es "const" -Funktion sein. – songyuanyao
Sie verwenden einen C-Style-Cast, was im Grunde bedeutet, dass Sie besser wissen als Ihr Compiler und es muss den Mund halten und tun, was Sie ihm sagen. Wenn Sie möchten, dass Ihre Tools Ihren Code für Sie überprüfen, sollten Sie keine C-Style-Casts verwenden. –