在使用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一句注释掉,问题就解决了。
以上步骤后,就可以进行编程了