VS2010 中的“重新定义;不同的类型修饰符”
Posted
技术标签:
【中文标题】VS2010 中的“重新定义;不同的类型修饰符”【英文标题】:"redefinition; different type modifier" in VS2010 【发布时间】:2012-03-02 23:07:09 【问题描述】:我正在尝试编译我在 Visual Studio 中下载的一些代码。该代码适用于 msvc 6,我将其导入 VS2010。该代码用于通过编译 DLL 为 labview 提供 ASIO 支持。整个代码见here。
构建时出现以下错误: “错误 C2373:'_pctype':重新定义;不同的类型修饰符。”
sn-p代码如下:
unsigned short _Ints[ 512 ];
unsigned short *_pctype = _Ints;
如果有人会从我提供的链接中引用代码包,这是来自文件 GenMonCIN.c
【问题讨论】:
听起来好像在同一个范围内有两个名为_pctype的变量。例如,如果第一个变量是在 for 语句中声明的,那么这可以在早期版本的 MSVC 中编译,但是如果没有周围的代码就很难分辨。与其深入研究您正在使用的库,不如在此处列出相关代码将是真正的帮助。具体来说,你能举出发生错误的函数吗? 感谢 JMcF 的建议,但没有其他情况。如果您需要更多信息,我确实在我的原始帖子中找到了发生此错误的函数。 【参考方案1】:错误消息试图告诉您_pctype
已在其他地方定义。
appears_pctype
是 Visual Studio 至少从 2005 版开始使用的标识符。
_pctype
、_pwctype
、_wctype
、_mbctype
、_mbcasemap
这些全局变量包含字符分类函数使用的信息。它们仅供内部使用。
请never pick names with a leading underscore at namespace scope,它们是为实施而保留的。写图书馆的人显然不知道,现在你完蛋了。
【讨论】:
好的...谢谢,我可以看到这种情况下的问题。但为什么我搞砸了,我不能把变量重命名为别的东西吗?奇怪的是,“_pctype”没有出现在项目的任何其他地方,除了这个声明。老实说,我不确定为什么作者做出了这个声明,我能提供的唯一其他信息是在“_Ints”声明之后,这是注释“//声音缓冲区代码引用这些外部,但没有“不供应”以上是关于VS2010 中的“重新定义;不同的类型修饰符”的主要内容,如果未能解决你的问题,请参考以下文章
VS2008 中的 C++ 项目有效,但在 VS2010 中无效