Compartir a través de


deprecated pragma

La directiva deprecatedpragma 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 deprecatedpragma, consulte Atributos de C++.

Sintaxis

#pragma deprecated(identifier1 [ , identifier2 ... ])

Comentarios

Cuando el compilador encuentra un identificador especificado por una directiva deprecatedpragma, 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 deprecatedpragma 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 deprecatedpragma. El modificador de declaración específico __declspec(deprecated) de Microsoft también es mejor opción en muchos casos que deprecatedpragma. 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
}

Consulte también

Pragmadirectivas y las __pragma palabras clave y _Pragma