我定义了以下常量:

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);
}

08-06 14:08