Поделиться через


deprecated pragma

Позволяет deprecatedpragma указать, что функция, тип или любой другой идентификатор больше не поддерживается в будущем выпуске или больше не следует использовать.

Примечание.

Сведения об атрибуте C++14 [[deprecated]] и рекомендации по использованию этого атрибута вместо модификатора Майкрософт __declspec(deprecated) или deprecatedpragmaатрибутов см. в разделе "Атрибуты" в C++.

Синтаксис

#pragma deprecated(identifier1 [ , identifier2 ... ])

Замечания

Когда компилятор обнаруживает идентификатор, указанный идентификатором deprecatedpragma, он выдает предупреждение компилятора C4995.

Имена макросов можно объявить нерекомендуемыми. Поместите имя макроса в кавычки; в противном случае произойдет расширение макроса.

Так как работает deprecatedpragma над всеми соответствующими идентификаторами и не учитывает подписи, это не лучший вариант для отмены определенных версий перегруженных функций. Любое соответствующее имя функции, которое вставляется в область, активирует предупреждение.

Мы рекомендуем использовать атрибут C++14 [[deprecated]] , если это возможно, вместо атрибута deprecatedpragma. Модификатор объявления, определенный корпорацией __declspec(deprecated) Майкрософт, также является лучшим выбором во многих случаях, чем deprecatedpragma. Атрибут [[deprecated]] и __declspec(deprecated) модификатор позволяют указать устаревшее состояние для определенных форм перегруженных функций. Предупреждение о диагностике отображается только в ссылках на определенную перегруженную функцию, к к ней применяется атрибут или модификатор.

Пример

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

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

// pragma_directive_deprecated2.cpp
// compile with: /W3
#pragma deprecated(X)
class X {  // C4995
public:
   void f(){}
};

int main() {
   X x;   // C4995
}

См. также

Pragma директивы и ключевые __pragma _Pragma слова