Pregunta

Hace poco consiguió un DLL que se ha implementado por otros. Tengo que usarlo en mi solicitud. En el archivo de cabecera de su clase tienen la declaración de la función

void func1() throw (CCustomException);

Ahora cuando compilo que estoy recibiendo la advertencia,

  

especificación de excepciones C ++ ignorado   salvo para indicar una función no es   _declspec (nothrow)

MSDN - Documentación pero no podía entender con claridad. Además, no quiero desactivar la advertencia sólo porque está apareciendo. Quiero saber lo que estoy haciendo mal en lugar de su desactivación.

pensé que mi función, decir myfunc() acceder a ese func1() de la DLL no tiene esa lista especificación de excepción. Por lo tanto he intentado tener la lista de especificaciones correspondientes excepción en mi función como también,

void myfunc1() throw (CCustomException);

Pero todavía estoy recibiendo la advertencia. ¿Cuál es la advertencia de que se trata y cómo deshacerse de él? Estoy usando Qt 4.5 en Windows XP.

¿Fue útil?

Solución

Ok, es un no-respuesta, pero me gustaría tirar la especificación de excepción y nunca uso de nuevo.

EDIT: He leído demasiado rápido, y no vi que no escribió la clase sí mismo. Mejor manera de deshacerse de las advertencias en msvc es a través de #pragma warning (push), seguido de #pragma warning (disable: xxxx) donde XXXX es el código de advertencia:

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

...

#ifdef _MSC_VER 
#pragma warning(pop)
#endif

EDIT: Es perfectamente seguro para desactivar la advertencia. especificaciones de excepción son malos, y el compilador que sólo te está diciendo que les incapacita para usted. Incluso si se rompe la norma.

Otros consejos

Se puede tratar de jugar con preprocesador:

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

void myfunc1() _throw (CCustomException);

O, intente desactivar la advertencia de que en Visual Studio.

I encontraron esta enlace , que encontré útil. Recién añadido si podría ser útil a alguien ..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top