8

Tengo un código para probar que agregué por adelantado el resto del código, por lo que el resto nunca se alcanzará en la prueba. ya que he aviso del nivel 4 juego, esto se traduce en una c4702: inalcanzable código de advertenciadeshabilitar advertencia c4702 parece no funcionar para VS 2012

I intentado desactivar esta manera:

//do something 
    return 0; 

    /*-------------------------------------------------------------------------*/ 

#pragma warning(disable: 4702) 
    //real code 

pero el compilador todavía gime. Y por cuanto tengo para tratar todas las advertencias como un error, esto no se compilará ...

Estoy utilizando Visual Studio 2012 premium ...

sería apreciada mucho gusto Cualquier ayuda.

Respuesta

17

Es posible que solo necesite colocar el pragma antes del inicio de la función afectada en lugar de dentro de él.

Desde el MSDN docs:

Para los números de aviso en el rango de 4700 a 4999, que son los asociados a la generación de código, el estado de la advertencia en efecto cuando el compilador encuentra la llave de apertura de un la función estará en efecto para el resto de la función. El uso del pragma de advertencia en la función para cambiar el estado de una advertencia que tiene un número mayor que 4699 solo tendrá efecto una vez que finalice la función.

Así, por ejemplo:

#pragma warning(push) 
#pragma warning(disable: 4702) 
bool Do() { 
    return true; 
    return true; // No warning generated 
#pragma warning(pop) 
} 

bool DoDo() { 
    return true; 
    return true; // Generates C4702 
} 
+0

Gracias! Esto también se aplica a Visual Studio 2010. –

+0

También se aplica a Visual Studio 2013 –

Cuestiones relacionadas