C++编译器错误C2371 - 重新定义WCHAR

C++编译器错误C2371 - 重新定义WCHAR

问题描述:

当包含头文件本身包含odbcss.h时,C++编译器错误C2371。我的项目设置为MBCS。C++编译器错误C2371 - 重新定义WCHAR

C:\ Program Files文件\微软的SDK \的Windows \ v6.0A \包括\ odbcss.h(430): 错误C2371: 'WCHAR':重定义;不同的基本类型1>
C:\ Program Files文件\微软的SDK \的Windows \ v6.0A \ \包括WINNT.H(289): 看到的 'WCHAR'

我看不出有任何的声明在odbcss.h中定义我可以设置以避免这种情况。有没有人看过这个?

这是一个已知的bug - 请参阅Microsoft连接网站:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98699

如果你编译你的应用程序为Unicode而不是MBCS不会发生错误。

当您重新声明与已声明的变量名称相同的变量时,会发生此错误。你看看odbcss.h是否已经声明了你已经拥有的变量?

对此有帮助吗?从线程

http://bytes.com/forum/thread602063.html

内容:

布鲁诺面包车Dooren [MVP VC++],但我知道这个问题的解决方案。 它通过更改“处理wchar_t作为内置的 类型”值“No(/ Zc:wchar_t-)”的项目设置来解决。但我正在使用“极限工具包 专业版”以获得良好外观&感受应用程序, 当我通过更改项目设置修复上述问题时,新的 链接错误来自Xtreme Toolkit Library。所以我该怎么修复 这个问题,在项目设置“对待wchar_t作为内置类型” 值“是”,我写了下面的语句,其中我包括wab.h 头文件。您可以在每个代码文件的基础上更改该设置,所以 只有特定文件使用该特定设置进行编译。如果 您可以通过这种方式解决您的问题,它将是最干净的 解决方案。

#define WIN16

#include "wab.h"

#undef WIN16

之后,我的项目是工作的罚款和所有相关的WAB的东西也工作正常。任何一个指导我,是否正确的方式 来解决这个问题?并且,这会对 项目的其余部分产生什么影响?我不会为此担心。无论定义如何,在两种情况下都是16位变量。我同意这不是最好看的 解决方案,但它应该工作,如果WIN16在 wab.h文件中没有其他影响。

-

亲切的问候,布鲁诺·Dooren [email protected] 仅删除“_nos_pam”

+2

尽管此链接可能会回答问题,但最好在此处包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Mac 2012-11-13 20:29:33

有关于这个各地的网络各种论坛半打的职位 - 它当在MFC中使用odbcss.h时,似乎可能会成为问题。大部分答案都涉及到改变包含头文件的顺序(voodoo调试)。包含odbcss.h的头文件在其本地项目中编译得很好,但是当它包含在不同的项目中时,会出现此错误。我们甚至把它放在后一个项目的stdafx.h中,就在MFC的基本包含之后,并且仍然没有喜悦。我们最终通过将它移动到原始项目中的cpp文件来解决它,该项目不使用MFC(本来应该完成的 - 但它不是我们的代码)。所以我们有一个解决方法,但没有真正的解决方案。