在调试我们的一些代码(C++)时,我发现了这个:
inline std::string BufferToStr(
const unsigned char* buffer,
int index,
size_t length)
{
std::string retValue(reinterpret_cast<const char*>(&buffer[index], length));
return retValue;
}
Run Code Online (Sandbox Code Playgroud)
这段代码的问题(忽略了缺少指针和字符串长度检查)是在它应该在之后的reinterpret_cast位置之后放置的右括号.起初我认为这是编译器的一个问题(使用VS2013),但在使用VS2012和gcc 4.6.3成功编译之后,我得出结论,这是出于某种原因允许的.由于length参数用作指针,因此代码不能在Windows或Linux上运行.length&buffer[index]
所以我的问题是为什么要编译?查看reinterpret_cast我的文档,我找不到任何文档,说你可以将逗号分隔的值列表传递给它,以及它将如何处理它.
c++ ×1