到目前为止,许多库和程序都使用snprintf()
函数定义为_snprintf()
, since _snprintf()
得到了支持。
#define snprintf _snprintf
最后,Visual Studio 14 定义了snprintf()
!
Since, snprintf()
现已正式支持。我们永远不应该#define 它。
这样做会给新事物蒙上阴影snprintf()
stdio.h 中定义的函数。
为了限制这一点,将其添加到 stdio.h 中
#ifdef snprintf
#error: Macro definition of snprintf conflicts with Standard Library function declaration”
#endif
因此,您的代码无法编译。
确实,在 Visual Studio 的所有早期版本中,您必须使用_snprintf()
功能。但从 VS 2014 开始你不应该用 #define 来定义它_snprintf()
.
在你的代码中的某个地方或者很可能在cocos
headers,这已经完成,因此出现错误。
检查并删除#define。
snprintf()
是 C99 规范的一部分。
启用 C99 支持
将其添加到您的程序中
#if _MSC_VER>=1900
# define STDC99
#endif
如果您不知道 _MSC_VER 宏值是什么
...
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003)
MSVC++ 7.0 _MSC_VER == 1300
MSVC++ 6.0 _MSC_VER == 1200
MSVC++ 5.0 _MSC_VER == 1100
MSVC++ 4.0 _MSC_VER == 1000
MSVC++ 2.0 _MSC_VER == 900
MSVC++ 1.0 _MSC_VER == 800
C/C++ 7.0 _MSC_VER == 700
C 6.0 _MSC_VER == 600