en desuso (C++)
Este tema trata sobre la declaración declspec específica de Microsoft en desuso. Para obtener información sobre el atributo C++14 [[deprecated]]
y guía sobre cuándo usar ese atributo frente a la declspec o pragma específica de Microsoft, vea Atributos estándar de C++.
Con las excepciones que se indican a continuación, la declaración deprecated
proporciona la misma funcionalidad que la directiva pragma en desuso:
La declaración
deprecated
en desuso permite especificar formas determinadas de sobrecargas de función como en desuso, mientras que la forma pragma se aplica a todas las formas sobrecargadas de un nombre de función.La declaración
deprecated
permite especificar un mensaje que se mostrará en el tiempo de compilación. El texto del mensaje puede proceder de una macro.Las macros solo se pueden marcar como en desuso con la pragma
deprecated
.
Si el compilador encuentra el uso de un identificador en desuso o el atributo [[deprecated]]
estándar, se produce una advertencia C4996.
Ejemplos
En el ejemplo siguiente se muestra cómo marcar funciones como desusadas y cómo especificar un mensaje que se mostrará, en tiempo de compilación, cuando se use la función desusada.
// deprecated.cpp
// compile with: /W3
#define MY_TEXT "function is deprecated"
void func1(void) {}
__declspec(deprecated) void func1(int) {}
__declspec(deprecated("** this is a deprecated function **")) void func2(int) {}
__declspec(deprecated(MY_TEXT)) void func3(int) {}
int main() {
func1();
func1(1); // C4996
func2(1); // C4996
func3(1); // C4996
}
En el ejemplo siguiente se muestra cómo marcar clases como desusadas y cómo especificar un mensaje que se mostrará, en tiempo de compilación, cuando se use la clase desusada.
// deprecate_class.cpp
// compile with: /W3
struct __declspec(deprecated) X {
void f(){}
};
struct __declspec(deprecated("** X2 is deprecated **")) X2 {
void f(){}
};
int main() {
X x; // C4996
X2 x2; // C4996
}