Domanda

Recentemente ho avuto una DLL che è stato implementato da altri. Devo usarlo nella mia applicazione. Nel file di intestazione della loro classe hanno la dichiarazione di funzione

void func1() throw (CCustomException);

Ora, quando compilo che sto ottenendo il messaggio di avviso,

  

C ++ specifica eccezione ignorata   tranne per indicare una funzione non è   _declspec (nothrow)

Ho letto il MSDN - Documentazione ma non riusciva a capire chiaramente. Inoltre, non voglio per disattivare l'avviso solo perché sta rivelando. Voglio sapere che cosa sto facendo male, invece di disabilitarlo.

Ho pensato che la mia funzione, dire myfunc() accesso che func1() dalla DLL non hai quella lista specifica delle eccezioni. Quindi Ho provato con l'elenco specifico di eccezione corrispondente nella mia funzione anche come,

void myfunc1() throw (CCustomException);

Ma io sono ancora ricevendo l'avviso. Che cosa è che l'avvertimento è tutto e come sbarazzarsi di esso? Sto usando Qt 4.5 in Windows XP.

È stato utile?

Soluzione

Ok, è una non-risposta, ma vorrei buttare via la specifica eccezione e non l'uso di nuovo .

EDIT: ho letto troppo veloce, e non ho visto non hai scritto la classe da soli. Miglior modo per sbarazzarsi di avvisi in msvc è via #pragma warning (push), seguita da #pragma warning (disable: xxxx) dove XXXX è il codice di avviso:

#ifdef _MSC_VER 
#pragma warning(push)
#pragma warning(disable:xxxx)
#endif 

...

#ifdef _MSC_VER 
#pragma warning(pop)
#endif

EDIT: E 'perfettamente sicuro per disattivare l'avviso. specifiche eccezioni sono il male, e il compilatore è solo dicendo che li sta invalidante per voi. Anche se si rompe lo standard.

Altri suggerimenti

Si potrebbe provare a giocare con preprocessore:

#ifdef _SOME_MSVC_DEFINE
#  define _throw(foo)
#else
#  define _throw(foo) throw(foo)
#endif

void myfunc1() _throw (CCustomException);

In alternativa, provate a disabilitare tale avviso a Visual Studio.

Ho trovato questo link , che ho trovato utile. Appena aggiunto se potrebbe essere utile a qualcuno ..

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