VS 2015 编译一些库的时候,出现 error “fatal error C1189: #error: Macro definition of snprintf conflicts with St

来源:互联网 发布:广联达软件官网 编辑:程序博客网 时间:2024/05/16 16:10

VS 2015 编译一些库的时候,出现 error “fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration”

问题

VS 2015 编译一些库的时候,出现 error “fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration”:

vs2015报错


解决方案

原因是,很多的库或者程序中将snprintf()函数定义为 _snprintf(),而在vs2015出现之前并不支持_snprintf()。

然而,vs2015定义了 snprintf()。在头文件 Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(1927)中:

stdio.h

这显然就导致了snprintf()的重定义。

解决的办法是,在你所有定义snpritf的文件中(可能你使用的是别人提供的库中出现冲突,那么这时候你就需要修改重新编译该库),找到如下定义:

#define snprintf _snprintf

将其替换为

#if defined(_MSC_VER) && _MSC_VER<1900#  define snprintf _snprintf#endif

参考

  • http://stackoverflow.com/questions/27754492/vs-2015-compiling-cocos2d-x-3-3-error-fatal-error-c1189-error-macro-definiti

  • http://trac.wxwidgets.org/ticket/16854#no1

1 0