这是相当奇怪的,我有一个我正在建设的课程,目前我把它放在我的文件顶部:
#pragma once
#include <cstdint>
#include <cstring>
#include <string>
#include <limits>
现在我需要将windows.h添加到混合中,但是一旦我这样做,我就会得到&#34;错误:期望一个标识符&#34;在这一行:
inline uint32_t Hash2(std::string &Key) {
return (MurMur3::x86_32(Key.c_str(), Key.size(), 2) % (std::numeric_limits<uint32_t>::max() - 1)) + 1;
}
如果重要的话,红线显示在:: max下面。至于函数本身,它应该使用murmur3来获取一个不是0的哈希值。
如果我删除
std::numeric_limits<uint32_t>::max()
并将其替换为常量4294967295
然后再次正常工作。
我不明白为什么会这样。有人有线索吗?
答案 0 :(得分:0)
Windows.h在其中定义宏的习惯非常糟糕。特别是,它定义了最小值和最大值。你需要取消那些。