przestarzałe (C++)

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
}

Zobacz też

__declspec
Słowa kluczowe