Domanda

Quando faccio una build di rilascio del mio Visual Studio 2008 soluzione ho un mucchio di errori in questo modo:

  

l'errore C2059: errore di sintassi: ''

Questo è come io di solito uso TRACE:

TRACE(_T("My error message.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), __WFILE__, __LINE__);

C'è anche un caso in cui lo uso con 5 parametri.

Ho pensato TRACE era credono di compilare completamente per build di rilascio. Che cosa devo fare per rendere la compilazione fuori completa? Grazie.

È stato utile?

Soluzione

La definizione della macro __WFILE__ è la causa del problema. Ci sono due modi per risolvere questo. In primo luogo, è possibile definire la macro come illustrato di seguito:

http://msdn.microsoft.com /en-us/library/b0084kay(v=vs.80).aspx

Si noti che non avvolgono la macro in #ifdef _DEBUG, che ha senso in quanto la corrispondente macro __FILE__ non viene rimosso in modo di scatto sia.

Ma che la documentazione è per VS2005. E 'stato rimosso da versioni più recenti della documentazione. Ecco perché si consiglia di fare questo:

_T(__FILE__)

Altri suggerimenti

Prima di tutto, è __FILE__ per quanto ne so, non è __WFILE__. è per questo che si ottiene che l'errore virgola. Dal momento che preprocessore è in grado di trovarlo.

In secondo luogo, perché scrivi gli ultimi tre parametri in ogni TRACE? TRACE è una macro, giusto?

Così si può definire in questo modo: (si veda anche il definire __WFILE__ macro)

#define FULL_TRACE   //define FULL_TRACE here
#define __WFILE__  L##__FILE__ //since __WFILE__ is not a real macro in MCVC++
#define TRACE(msg) FULL_TRACE(msg, ::GetLastError(), __WFILE__, __FUNCTION__, __LINE__)

Ora, è possibile rintracciare in questo modo

TRACE("Error in I/O file")

E il gioco è fatto!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top