Fino ad ora, Molte biblioteche & programmi usati snprintf()
funzione definendo come _snprintf()
, dal momento che _snprintf()
è stato sostenuto.
#define snprintf _snprintf
Infine, Visual Studio 14 definisce snprintf()
!
Poiché, snprintf()
è ora ufficialmente supportato. Non dovremmo mai # definirlo.
Fare ciò oscurerà la nuova funzione snprintf()
definita in stdio.h.
Per limitare questo, questo viene aggiunto in stdio.h
#ifdef snprintf
#error: Macro definition of snprintf conflicts with Standard Library function declaration”
#endif
Quindi, il codice non viene compilato.
È vero che su tutte le versioni precedenti di Visual Studio, è necessario utilizzare la funzione _snprintf()
. Ma dal 2014 in poi non dovresti # definirlo con _snprintf()
.
Da qualche parte nel codice o molto probabilmente nelle intestazioni cocos
, questo è fatto e quindi l'errore.
Verificare che e rimuovere tale #define.
snprintf()
fa parte delle specifiche C99.
per abilitare il supporto C99
aggiungere questo nel vostro programma
#if _MSC_VER>=1900
# define STDC99
#endif
Nel caso in cui non si sa cosa _MSC_VER valori macro sono
...
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
prega di notare che '#define snprintf _snprintf' non dovrebbe mai essere utilizzato. Non è sicuro dato che '_snprintf()' non garantisce la terminazione nulla a differenza di 'snprintf()' di C99. Ci sono anche altre differenze. – cremno
@ cremno, questo è il tuo commento o la risposta? Penso che tu abbia frainteso l'intero punto che sto facendo qui. – user1
È solo un commento. La tua risposta va bene. – cremno