deprecated
pragma
O deprecated
pragma permite indicar que uma função, tipo ou qualquer outro identificador pode não ser mais suportado em uma versão futura ou não deve mais ser usado.
Observação
Para obter informações sobre o atributo C++14 [[deprecated]]
e orientação sobre quando usar esse atributo em vez do modificador do Microsoft __declspec(deprecated)
ou do deprecated
pragma, consulte Attributes in C++.
Sintaxe
#pragma deprecated(
identifier1 [,
identifier2 ... ])
Comentários
Quando o compilador encontra um identificador especificado por um deprecated
pragma, ele emite um aviso do compilador C4995.
Você pode depreciar nomes de macros. Coloque o nome da macro entre aspas ou ocorrerá expansão da macro.
Como o deprecated
pragma funciona em todos os identificadores correspondentes e não leva as assinaturas em consideração, ele não é a melhor opção para substituir versões específicas de funções sobrecarregadas. Qualquer nome de função correspondente que seja trazido para o escopo dispara o aviso.
Recomendamos que você use o atributo C++14 [[deprecated]]
, quando possível, em vez do deprecated
pragma. O modificador de declaração de __declspec(deprecated)
específico da Microsoft também é uma escolha melhor em muitos casos do que o deprecated
pragma. O atributo [[deprecated]]
e o modificador __declspec(deprecated)
permitem especificar o status preterido para formas específicas de funções sobrecarregadas. O aviso de diagnóstico só aparece em referências à função sobrecarregada específica à qual o atributo ou modificador se aplica.
Exemplo
// 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
}
O exemplo a seguir mostra como depreciar uma classe:
// pragma_directive_deprecated2.cpp
// compile with: /W3
#pragma deprecated(X)
class X { // C4995
public:
void f(){}
};
int main() {
X x; // C4995
}