error C3163: “_vsnprintf”: 属性与以前的声明不一致

 
C2008 关于_vsnprintf 的重定义问题

在使用VS2008打开一个2005的firebird工程,进行编译时,发生一个关于_vsnprintf 的错误

c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(358) : error C3163: “_vsnprintf”: 属性与以前的声明不一致
c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(350) : 参见“_vsnprintf”的声明

有人说解决办法是这个:

"VC9 CRT 的 vsnprintf 与其他第3方定义的冲突,导致VS2008 编译错误"

error C3163: '_vsnprintf': attributes inconsistent with previous declaration

比如
wpdpack\include\pcap-stdinc.h
定义了,要注释掉
//#define vsnprintf _vsnprintf




#if _MSC_VER < 1500
#define snprintf _snprintf
#define vsnprintf _vsnprintf
#endif

但是并没有发现可以解决问题。

有的又说是这个:

没这么麻烦!既然PCAP.h包的stdio.h的头文件有问题,就先把stdio.h包进来。

就这样:

#include <stdio.h>
#include <pcap.h>

不是头文件有问题,只是winpcap对系统的stdio.h进行了重定议,两个版本间出现了一点小小的磨擦.

最后的解决方法

error C3163: “_vsnprintf”: 属性与以前的声明不一致

据说是因为winpcap对系统的stdio.h进行了重定议,两个版本间出现了一点小小的磨擦,我将WpdPack_4_0_1中的pcap-stdinc.h文件中#define vsnprintf _vsnprintf一句注释掉,问题就解决了。

以上步骤后,就可以进行编程了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章