deprecated
pragma
La directiva deprecated
pragma le permite indicar que una función, tipo o cualquier otro identificador puede que deje de admitirse en una versión futura o que no se deba seguir utilizando.
Nota:
Para obtener información sobre el atributo [[deprecated]]
de C++14 e instrucciones sobre cuándo usar ese atributo en lugar del modificador __declspec(deprecated)
de Microsoft o deprecated
pragma, consulte Atributos de C++.
Sintaxis
#pragma deprecated(
identifier1 [,
identifier2 ... ])
Comentarios
Cuando el compilador encuentra un identificador especificado por una directiva deprecated
pragma, emite la advertencia del compilador C4995.
Puede desusar nombres de macro. Coloque el nombre de la macro entre comillas; de lo contrario se producirá la expansión de la macro.
Dado que deprecated
pragma funciona en todos los identificadores coincidentes y no tiene en cuenta las firmas, no es la mejor opción para dejar de usar versiones específicas de funciones sobrecargadas. Cualquier nombre de función coincidente que se incluya en el ámbito desencadena la advertencia.
Se recomienda usar el atributo [[deprecated]]
de C++14, siempre que sea posible, en lugar de deprecated
pragma. El modificador de declaración específico __declspec(deprecated)
de Microsoft también es mejor opción en muchos casos que deprecated
pragma. El atributo [[deprecated]]
y el modificador __declspec(deprecated)
le permiten especificar el estado en desuso para formas concretas de funciones sobrecargadas. La advertencia de diagnóstico solo aparece en las referencias a la función sobrecargada específica a la que se aplica el atributo o modificador.
Ejemplo
// pragma_directive_deprecated.cpp
// compile with: /W3
#include <stdio.h>
void func1(void) {
}
void func2(void) {
}
int main() {
func1();
func2();
#pragma deprecated(func1, func2)
func1(); // C4995
func2(); // C4995
}
En el ejemplo siguiente se muestra cómo desusar una clase:
// pragma_directive_deprecated2.cpp
// compile with: /W3
#pragma deprecated(X)
class X { // C4995
public:
void f(){}
};
int main() {
X x; // C4995
}