2010-01-26 27 views
19

Al usar sprintf, el compilador me advierte que la función está en desuso.Agregar mi propia advertencia de compilador

¿Cómo puedo mostrar mi propia advertencia del compilador?

+1

¿Qué significa ser obsoleto sprintf tienen que ver con esta pregunta? –

+0

Apenas un ejemplo de una advertencia del compilador que fue puesta por un "usuario" y no puramente generada por el compilador. – Warpin

Respuesta

19

En Visual Studio,

#pragma message ("Warning goes here")

En una nota lateral, si you want to suppress such warnings, encontrar el ID de advertencia del compilador (por el aviso en desuso, es C4996) e inserte esta línea:

#pragma warning(disable : 4996)

+0

Sin embargo, esto no hace exactamente lo que quiere Martin: quiere que la advertencia se emita cuando la función se usa, no cuando se compila. –

+0

Supongo que mi pregunta podría haber sido leída de cualquier manera (¡lo siento por eso!), Pero esta era la que estaba buscando. – Warpin

12

Para marcar una función como obsoleta, use __declspec(deprecated), p. Ej.

__declspec(deprecated) void f(); 
+1

Creo que esto es lo que el OP realmente quería. – LiraNuna

+2

Él le pide que muestre su propia advertencia, no una advertencia * obsoleta * específica –

18

Aunque no existe una norma #warning directice, muchos compiladores (incluyendo GCC, VC, de Intel y manzanas), el apoyo #warning message.

#warning "this is deprecated" 

A menudo es mejor, no sólo para que aparezca una advertencia (el cual las personas pueden pasar por alto), sino dejar que la compilación de fallar por completo, utilizando el #error Directiva (que es lo normal):

#if !defined(FOO) && !defined(BAR) 
# error "you have neither foo nor bar set up" 
#endif 
+6

MSVC++ 2013 no lo admite. –

+0

No puedo ver que funcione en MSVC++ 2015 o 2017. – Zitrax

6

En VC si desea que el aviso aparezca en el recuento de advertencia al final de la compilación es necesario utilizar este formato:

#pragma message(": warning<put what you like here>: blah blah blah") 

la secuencia es importante: dos puntos, espacio, "wa rning", algo o nada, de colon 'el texto de advertencia'

Si quieres ser lujoso, entonces el archivo y número de línea se puede añadir antes del primero de colon por lo que se puede hacer doble clic en él para saltar al código (de microsoft.com):

// pragma_directives_message1.cpp 
// compile with: /LD 
#if _M_IX86 >= 500 
#pragma message("_M_IX86 >= 500") 
#endif 

#pragma message("") 

#pragma message("Compiling " __FILE__) 
#pragma message("Last modified on " __TIMESTAMP__) 

#pragma message("") 

// with line number 
#define STRING2(x) #x 
#define STRING(x) STRING2(x) 

#pragma message (__FILE__ "[" STRING(__LINE__) "]: test") 

#pragma message("") 
+0

Gracias, lo he actualizado y lo he copiado, creo que es la misma página, ¡pero esto fue hace un tiempo! – noelicus

0

creo que esto debería funcionar

void foo() __attribute__ ((deprecated("This function is deprecated. \nFor further information please refer to the README"))); 
Cuestiones relacionadas