C++ 一位朋友给了我他的源代码,我';我很难修复FNVHash中的错误

C++ 一位朋友给了我他的源代码,我';我很难修复FNVHash中的错误,c++,C++,我对cpp不太了解,所以这完全是一个初学者的问题。如果是,我很抱歉浪费了你的时间。我试着用谷歌搜索,但谷歌也不知道这意味着什么 编辑:我应该说,向他寻求帮助不是clang的选项:注意:常量表达式中不允许重新解释强制转换@StephenNewell我该如何处理/修复它?将数据的类型更改为无符号字符常量*,然后删除所有类型转换。@StephenNewell删除所有类型转换是什么意思?那会给我留下数据吗?哦,等等,我明白你的意思了,谢谢 constexpr unsigned int FNVHash(c

我对cpp不太了解,所以这完全是一个初学者的问题。如果是,我很抱歉浪费了你的时间。我试着用谷歌搜索,但谷歌也不知道这意味着什么


编辑:我应该说,向他寻求帮助不是clang的选项

注意:常量表达式中不允许重新解释强制转换
@StephenNewell我该如何处理/修复它?将
数据的类型
更改为
无符号字符常量*
,然后删除所有类型转换。@StephenNewell删除所有类型转换是什么意思?那会给我留下数据吗?哦,等等,我明白你的意思了,谢谢
constexpr unsigned int FNVHash(const void* const data, const int len)
{
    unsigned char* p = const_cast<unsigned char*>(reinterpret_cast<const unsigned char*>(data));
    unsigned int h = 2166136261;

    for (int i = 0; i < len; i++)
        h = (h * 16777619) ^ p[i];

    return h;
}
Error   C3615   constexpr function 'UTILS::FNVHash' cannot result in a constant expression (compiling source file **the source file** ) **the file path/project name**