deprecated (C++)

В этой статье описывается объявление деклспека, нерекомендуемое корпорацией Майкрософт. Сведения об атрибуте C++14 [[deprecated]] и рекомендациях по использованию этого атрибута и о том, когда следует использовать этот атрибут, а также о деклспеке или pragma, см. в статье C++ Standard Attributes.

При приведенных ниже исключениях объявление предлагает те же функции, deprecated что и нерекомендуемый pragma:

  • Объявление deprecated позволяет указать определенные формы перегрузки функций как нерекомендуемые, в то время как форма pragma применяется ко всем перегруженным формам имени функции.

  • Объявление deprecated позволяет указать сообщение, которое будет отображаться во время компиляции. Текст сообщения может быть взят из макроса.

  • Макросы можно пометить только как устаревшие с deprecated помощью pragma.

Если компилятор обнаруживает использование устаревшего идентификатора или стандартного [[deprecated]] атрибута, возникает предупреждение C4996 .

Примеры

В следующем примере показано, как отметить функции как нерекомендуемые и как указать сообщение, которое будет отображаться во время компиляции, если будет использоваться нерекомендуемая функция.

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

В следующем примере показано, как отметить классы как нерекомендуемые и как указать сообщение, которое будет отображаться во время компиляции, если будет использоваться нерекомендуемый класс.

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

См. также

__declspec
Ключевые слова