-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风格的演员表。 –