inaktuell (C++)

Det här avsnittet handlar om den Microsoft-specifika inaktuella declspec-deklarationen. Information om attributet C++14 [[deprecated]] och vägledning om när attributet ska användas jämfört med Microsoft-specifika declspec- eller pragma-attribut finns i C++ Standardattribut.

Med de undantag som anges nedan erbjuder deklarationen deprecated samma funktioner som den inaktuella pragman:

  • Med deklarationen deprecated kan du ange särskilda former av funktionsöverbelastningar som inaktuella, medan pragmaformuläret gäller för alla överlagrade former av ett funktionsnamn.

  • Med deklarationen deprecated kan du ange ett meddelande som ska visas vid kompileringstillfället. Texten i meddelandet kan komma från ett makro.

  • Makron kan bara markeras som inaktuella med deprecated pragma.

Om kompilatorn stöter på användning av en inaktuell identifierare eller standardattributet [[deprecated]] utlöses en C4996-varning .

Exempel

Följande exempel visar hur du markerar funktioner som inaktuella och hur du anger ett meddelande som ska visas vid kompileringstillfället, när den inaktuella funktionen används.

// 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
}

Följande exempel visar hur du markerar klasser som inaktuella och hur du anger ett meddelande som ska visas vid kompileringstillfället, när den inaktuella klassen används.

// 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
}

Se även

__declspec
nyckelord