【问题标题】:Error C2371 'DWORD': redefinition; different basic types错误 C2371 'DWORD':重新定义;不同的基本类型
【发布时间】:2016-08-09 20:04:15
【问题描述】:

我在使用 MFC 在 Visual Studio 2015 上编译 Visual C++ 代码时收到此错误“错误 C2371 'DWORD':重新定义;不同的基本类型”。 当我双击错误时,它会将我带到 stdint.h 第 23 行:

typedef unsigned int       uint32_t;

如果我在我的代码中找到任何 DWORD 并按 f12,它会将我带到 minwindef.h 第 156 行:

typedef unsigned long       DWORD;

我没有明确包含任何这些文件,因此我不知道这些文件的包含顺序。 我在这里很迷茫,不知道如何解决这个错误。有人有线索吗? 如果您需要更多信息,请询问我。

【问题讨论】:

  • A) 您是否为DWORD 制作了自己的typedef? B)仅仅因为您没有明确包含它并不意味着您确实包含的标题之一也没有。
  • 你包含了哪些标题?
  • @NathanOliver a)我自己没有定义 DWORD b)我知道,这就是问题所在,我无法将代码追踪到包含这些标头的位置。
  • @ArnavBorborah 我包含了数百个标题,我无法在此处列出所有标题。
  • 在 GCC 中 -H 将显示包含树。必须有一些 MSVC 等价物。谷歌搜索............我们开始了! stackoverflow.com/questions/42308/…

标签: c++ visual-c++ visual-studio-2015 mfc


【解决方案1】:

我发现了错误,它在 3rdpartyapi.h 上:

#ifndef uint32_t
# define uint32_t DWORD
#endif

我所做的只是在 #ifndef 之前包含 #include <cstdint> 并且错误消失了。 谢谢大家的帮助。

【讨论】:

  • 哈!我把它弄反了。这是一个该死的宏。
  • @sergiol 是的,我知道,但是当我点击它时会显示“你明天可以接受自己的答案”
猜你喜欢
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多