Bis jetzt, viele Bibliotheken & Programme snprintf()
Funktion verwendet, indem Sie es als _snprintf()
definieren, da _snprintf()
unterstützt wurde.
#define snprintf _snprintf
Schließlich definiert Visual Studio 14 snprintf()
!
Seit, snprintf()
wird jetzt offiziell unterstützt. Wir sollten es niemals # definieren.
Dies wird die neue Funktion snprintf()
überschatten, die in stdio.h definiert ist.
Um das zu beschränken, wird diese
#ifdef snprintf
#error: Macro definition of snprintf conflicts with Standard Library function declaration”
#endif
daher in stdio.h hinzugefügt, der Code nicht kompiliert.
Es stimmt, dass Sie in allen früheren Versionen von Visual Studio die Funktion _snprintf()
verwenden müssen. Aber VS ab 2014 sollte nicht mit _snprintf()
definiert werden.
Irgendwo in Ihrem Code oder höchstwahrscheinlich in cocos
Header, dies ist getan und daher der Fehler.
Überprüfen Sie das und entfernen Sie das #define.
snprintf()
ist Teil der C99-Spezifikationen.
C99 Unterstützung
fügen Sie diese in Ihrem Programm
#if _MSC_VER>=1900
# define STDC99
#endif
Bei Damit wissen Sie nicht, was _MSC_VER Makrowerte
...
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
Bitte beachten Sie, dass '#define snprintf _snprintf' nie verwendet werden soll. Es ist unsicher, da '_snprintf()' keine Null-Terminierung garantiert im Gegensatz zu 'snprintf()' von C99. Es gibt auch andere Unterschiede. – cremno
@cremno, Ist das dein Kommentar oder deine Antwort? Ich denke, Sie haben den ganzen Punkt, den ich hier mache, falsch verstanden. – user1
Es ist nur ein Kommentar. Deine Antwort ist in Ordnung. – cremno