我定义了以下常量:
constexpr uint8_t msgHeader[] = { 0x44, 0x44, 0x53, 0x20 };
constexpr uint8_t msgHeaderSize = sizeof(msgHeader) / sizeof(msgHeader[0]);
接下来,我有一个提供指向消息数据的指针的函数,我需要检查消息头是否有效。这是示例代码:
void IsHeaderValid(uint8_t* msg)
{
uint8_t currentHeader[msgHeaderSize];
for(int i = 0; i < msgHeaderSize; ++i)
{
currentHeader[i] = msg[i];
}
if(strcmp(currentHeader, msgHeader))
{
return false;
}
return true;
}
您能否推荐将constexpr msgHeader与传入消息进行比较的任何其他(更简单/更简洁)方法?
最佳答案
使用您的algorithms:
bool IsHeaderValid(uint8_t* msg)
{
return std::equal(msgHeader, msgHeader + msgHeaderSize, msg);
}
要么
bool IsHeaderValid(uint8_t* msg)
{
return std::equal(std::begin(msgHeader), std::end(msgHeader), msg);
}