包含windows.h会导致错误

时间:2015-09-24 16:44:37

标签: c++ windows visual-studio-2013

这是相当奇怪的,我有一个我正在建设的课程,目前我把它放在我的文件顶部:

#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

然后再次正常工作。

我不明白为什么会这样。有人有线索吗?

1 个答案:

答案 0 :(得分:0)

Windows.h在其中定义宏的习惯非常糟糕。特别是,它定义了最小值和最大值。你需要取消那些。