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?
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?
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
)
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. –
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
Enlace solo respuesta * y * el enlace no es válido. :-( – TobiMcNamobi
Para marcar una función como obsoleta, use __declspec(deprecated)
, p. Ej.
__declspec(deprecated) void f();
Creo que esto es lo que el OP realmente quería. – LiraNuna
Él le pide que muestre su propia advertencia, no una advertencia * obsoleta * específica –
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
MSVC++ 2013 no lo admite. –
No puedo ver que funcione en MSVC++ 2015 o 2017. – Zitrax
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("")
Gracias, lo he actualizado y lo he copiado, creo que es la misma página, ¡pero esto fue hace un tiempo! – noelicus
creo que esto debería funcionar
void foo() __attribute__ ((deprecated("This function is deprecated. \nFor further information please refer to the README")));
¿Qué significa ser obsoleto sprintf tienen que ver con esta pregunta? –
Apenas un ejemplo de una advertencia del compilador que fue puesta por un "usuario" y no puramente generada por el compilador. – Warpin