六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 93|回复: 0

编译错误C3163:_vsprintf的属性声明不兼容

[复制链接]

升级  9.33%

16

主题

16

主题

16

主题

秀才

Rank: 2

积分
64
 楼主| 发表于 2013-1-19 04:12:16 | 显示全部楼层 |阅读模式
编译错误C3163:_vsprintf的属性声明不兼容

问题

在昨天用VS2008和最新的V7.1SDK编译程序的ZLIB时候,出现了一个错误:
38> C:\Program Files\Microsoft VisualStudio 9.0\VC\include\stdio.h(358) : error C3163: '_vsnprintf': attributesinconsistent with previous declaration
38>        C:\Program Files\MicrosoftVisual Studio 9.0\VC\include\stdio.h(350) : see declaration of '_vsnprintf'
 
看了一下,粗看之下,感觉到很奇怪,这可是VC自己的头文件的定义,难道还有错误,在发布的时候都没有发现吗?转念一想,编译别的程序的时候也用到了这个文件,怎么没有报错呢?这其中有什么古怪?
 
解决办法

在Gooogle上用“error C3163: '_vsnprintf':attributes inconsistent with previous declaration”作为关键词搜索了一下,很快找到了这个网址:http://hi.baidu.com/johnllon/blog/item/8b22a5074a8d06ce7b8947e0.html,描述了与我遇到的相同的问题,作者遇到了这个问题后已经解决了,原因是:
  在使用vsnprintf这个函数的cpp文件中,包含了# define vsnprintf_vsnprintf的定义。在以前版本的vc中,没有定义vsnprintf,只定义_vsnprintf。而在2008版本中,添加了vsnprintf的定义。因此在编译的时候导致出现了上述错误。
解决的办法是针对vc2008前的vc定义宏:
#if (_MSC_VER < 1500)
#define vsnprintf _vsnprintf
#endif
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表