今天编译yate项目的时候,碰到好多“_vsnprintf”: 属性与以前的声明不一致这种错误,到网上搜一把之后,找到了很好的解决方法。
找到程序中定义vsnprintf的宏(可能在某个被包含的头文件中),这里出现的问题的宏原来定义为#define vsnprintf _vsnprintf。
解决办法就是将其根据版本来决定是否注释,原因是VC2008 已经定义了。
修改成如下的样子:
#if (_MSC_VER != 1500) // 只针对VC++ 2008注释下面的代码行
# define vsnprintf _vsnprintf
#endif
或者修改为:
#if (_MSC_VER < 1500)
#define vsnprintf _vsnprintf
#endif