2011-12-13 19 views
7

Estoy consumiendo un archivo de cabecera que está salpicada de mensajes molestos como:desactivar el mensaje #pragma ("...") en Visual C++?

// annoying.h: 

#pragma message("Compiling " __FILE__) 

yo preferiría una salida de generación limpia cuando no hay problemas reales. ¿Hay algo que pueda hacer antes de incluir este archivo para evitar que se impriman los mensajes?

// not_annoying.cpp: 

// PUT MAGIC HERE 
#include "annoying.h" 
+0

El encabezado se entrega desde otro grupo; parece imprudente cambiarlo manualmente cada vez. Sin embargo, sí consideré un paso previo a la construcción que lo ejecuta a través de 'sed'. – Eric

Respuesta

8

apenas define una macro que hace que el message pragma desaparecer.

#define message(ignore) 
+0

Entonces, ¿es legal tener una línea que simplemente dice "#pragma" en ella? Desafortunadamente no puedo usar esto porque el 'mensaje' del token también se usa para otras cosas; obviamente, lo que realmente tengo es un problema organizativo más que técnico. ¡Pero es una pena que no haya solo un meta-pragma de algún tipo! – Eric

+3

El comportamiento de pragmas ya está definido por la implementación, por lo que el efecto del pragma vacío también está definido por la implementación. Es técnicamente legal (6.10.6.1), pero ¡quién sabe lo que hace! –

+2

@Eric: Tenga en cuenta que '#define message (ignore)' definirá una * función macro * llamada 'mensaje', no una macro general. Es decir, sustituirá a un sitio 'message()' pero no a un mensaje simple 'message'. Además, si desea limitar el alcance de la macro, podría '# undef' después de incluir el encabezado problemático. – jamesdlin

Cuestiones relacionadas