Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat dotyczy deklaracji declspec specyficznej dla firmy Microsoft. Aby uzyskać informacje o atrybucie C++14 [[deprecated]]
i wskazówki dotyczące tego, kiedy używać tego atrybutu w porównaniu z dekrecją lub pragma specyficzną dla firmy Microsoft, zobacz Atrybuty standardowe języka C++.
Z wyjątkami opisanymi poniżej deprecated
deklaracja oferuje taką samą funkcjonalność jak przestarzała pragma:
Deklaracja
deprecated
umożliwia określenie określonych form przeciążeń funkcji jako przestarzałych, natomiast formularz pragma ma zastosowanie do wszystkich przeciążonych form nazwy funkcji.Deklaracja
deprecated
umożliwia określenie komunikatu, który będzie wyświetlany w czasie kompilacji. Tekst wiadomości może pochodzić z makra.Makra mogą być oznaczone jako przestarzałe tylko z
deprecated
pragma.
Jeśli kompilator napotka użycie przestarzałego identyfikatora lub atrybutu standardowego [[deprecated]]
, zostanie zwrócone ostrzeżenie C4996 .
Przykłady
W poniższym przykładzie pokazano, jak oznaczyć funkcje jako przestarzałe i jak określić komunikat, który będzie wyświetlany w czasie kompilacji, gdy jest używana przestarzała funkcja.
// 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
}
W poniższym przykładzie pokazano, jak oznaczyć klasy jako przestarzałe oraz jak określić komunikat, który będzie wyświetlany w czasie kompilacji, gdy jest używana przestarzała klasa.
// 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
}