-1
當我的代碼使用cppcheck它表示的功能可以作出常量。 Cppcheck似乎是正確的,但我發現代碼中的memcpy很奇怪。從代碼memcpy和const正確性
摘錄:
if ((offset + size) <= _bufferSize)
{
char* _destPtr = (char*)_buffer + offset;
memcpy(_destPtr, data, size);
result = true;
}
據我瞭解的memcpy將間接寫入_buffer所以函數不是常量。但是,即使直接使用_buffer,編譯器仍然會編譯代碼而不會出錯。
爲什麼編譯器不會在這裏產生一個錯誤?
很難說,如果你不發佈函數簽名並且cppcheck希望你放置'const'。請創建一個[MCVE]。 –
它修改'_buffer'指向的東西,而不是'_buffer'本身;那麼它可能是'const'函數。 – songyuanyao
您使用的是C風格的演員,這基本上意味着你比你的編譯器更好,它需要閉嘴,做你告訴它。如果您希望自己的工具爲您檢查代碼,請考慮不要使用C風格的演員表。 –