warning
pragma
Habilita la modificación selectiva del comportamiento de los mensajes de advertencia del compilador.
Sintaxis
#pragma warning(
warning-specifier
:
warning-number-list
[;
warning-specifier
:
warning-number-list
... ])
#pragma warning( push
[,
n ])
#pragma warning( pop )
Observaciones
Los siguientes parámetros warning-specifier están disponibles.
warning-specifier | Significado |
---|---|
1 , 2 , 3 , 4 |
Aplique el nivel especificado a las advertencias especificadas. También activa una advertencia especificada desactivada de forma predeterminada. |
default |
Restablezca el comportamiento de advertencia a su valor predeterminado. También activa una advertencia especificada desactivada de forma predeterminada. La advertencia se generará en su nivel predeterminado, documentado. Para obtener más información, vea advertencias del compilador desactivadas de forma predeterminada. |
disable |
No emita los mensajes de advertencia especificados. |
error |
Notifique las advertencias especificadas como errores. |
once |
Muestra los mensajes especificados solo una vez. |
suppress |
Inserta el estado actual del pragma en la pila, deshabilita la advertencia especificada para la línea siguiente y, a continuación, muestra la pila de advertencias para que se restablezca el estado pragma. |
La siguiente instrucción de código muestra que un parámetro warning-number-list
puede contener varios números de advertencia y que se pueden especificar varios parámetros warning-specifier
en la misma directiva pragma.
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
Esta directiva es funcionalmente equivalente al código siguiente:
// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )
// Issue warning C4385 only once.
#pragma warning( once : 4385 )
// Report warning C4164 as an error.
#pragma warning( error : 164 )
El compilador agrega 4000 a cualquier número de advertencia entre 0 y 999.
Los números de advertencia del intervalo 4700-4999 están asociados a la generación de código. Para estas advertencias, el estado de la advertencia en vigor cuando el compilador alcanza la definición de función permanece en vigor para el resto de la función. El uso de la warning
pragma de la función para cambiar el estado de un número de advertencia mayor que 4699 solo surte efecto después del final de la función. En el ejemplo siguiente se muestra la ubicación correcta de un warning
pragma para deshabilitar un mensaje de advertencia de generación de código y, a continuación, restaurarlo.
// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
int x;
int y = x; // no C4700 here
#pragma warning(default:4700) // C4700 enabled after Test ends
}
int main() {
int x;
int y = x; // C4700
}
Tenga en cuenta que a lo largo de un cuerpo de función, la última configuración del warning
pragma estará en vigor para toda la función.
Insertar y pop
El warning
pragma también admite la sintaxis siguiente, donde el parámetro opcional n representa un nivel de advertencia (de 1 a 4).
#pragma warning( push [ , n ] )
#pragma warning( pop )
El pragmawarning( push )
almacena el estado de advertencia actual para cada advertencia. El pragmawarning( push, n )
almacena el estado actual de cada advertencia y establece el nivel de advertencia global en n.
El pragmawarning( pop )
muestra el último estado de advertencia insertado en la pila. Los cambios realizados en el estado de advertencia entre push
y pop
se deshacen. Considere este ejemplo:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
Al final de este código, pop
restaura el estado de cada advertencia (incluye 4705, 4706 y 4707) a lo que estaba al principio del código.
Al escribir archivos de encabezado, puede usar push
y pop
para garantizar que los cambios de estado de advertencia realizados por un usuario no impidan que los encabezados se compilen correctamente. Use push
al principio del encabezado y pop
al final. Por ejemplo, puede tener un encabezado que no se compile de forma limpia en el nivel de advertencia 4. El código siguiente cambia el nivel de advertencia a 3 y, a continuación, restaura el nivel de advertencia original al final del encabezado.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
Para obtener más información sobre las opciones del compilador que le ayudan a suprimir las advertencias, consulte /FI
y /w
.