deprecated
pragma
Pozwala deprecated
pragma to wskazać, że funkcja, typ lub inny identyfikator mogą nie być już obsługiwane w przyszłej wersji lub nie powinny być już używane.
Uwaga
Aby uzyskać informacje o atrybucie C++14 [[deprecated]]
i wskazówki dotyczące tego, kiedy należy użyć tego atrybutu zamiast modyfikatora firmy Microsoft __declspec(deprecated)
lub deprecated
pragma, zobacz Atrybuty w języku C++.
Składnia
#pragma deprecated(
identifier1 [,
identyfikator2 ... ])
Uwagi
Gdy kompilator napotka identyfikator określony przez deprecated
pragmaelement , wystawia ostrzeżenie kompilatora C4995.
Możesz wycofać nazwy makr. Umieść nazwę makra w cudzysłowie lub zostanie wykonane rozszerzenie makra.
Ponieważ funkcja deprecated
pragma działa na wszystkich pasujących identyfikatorach i nie uwzględnia podpisów, nie jest to najlepsza opcja dla przestarzałych wersji przeciążonych funkcji. Każda zgodna nazwa funkcji, która jest wprowadzana do zakresu, wyzwala ostrzeżenie.
Zalecamy użycie atrybutu C++14 [[deprecated]]
, jeśli jest to możliwe, zamiast deprecated
pragma. Modyfikator deklaracji specyficznej dla __declspec(deprecated)
firmy Microsoft jest również lepszym wyborem w wielu przypadkach niż deprecated
pragma. Atrybut [[deprecated]]
i __declspec(deprecated)
modyfikator umożliwiają określenie stanu przestarzałego dla określonych form przeciążonych funkcji. Ostrzeżenie diagnostyczne pojawia się tylko w odwołaniach do określonej przeciążonej funkcji, do których ma zastosowanie atrybut lub modyfikator.
Przykład
// 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
}
W poniższym przykładzie pokazano, jak wycofać klasę:
// pragma_directive_deprecated2.cpp
// compile with: /W3
#pragma deprecated(X)
class X { // C4995
public:
void f(){}
};
int main() {
X x; // C4995
}