deprecated
pragma
Позволяет deprecated
pragma указать, что функция, тип или любой другой идентификатор больше не поддерживается в будущем выпуске или больше не следует использовать.
Примечание.
Сведения об атрибуте C++14 [[deprecated]]
и рекомендации по использованию этого атрибута вместо модификатора Майкрософт __declspec(deprecated)
или deprecated
pragmaатрибутов см. в разделе "Атрибуты" в C++.
Синтаксис
#pragma deprecated(
identifier1 [,
identifier2 ... ])
Замечания
Когда компилятор обнаруживает идентификатор, указанный идентификатором deprecated
pragma, он выдает предупреждение компилятора C4995.
Имена макросов можно объявить нерекомендуемыми. Поместите имя макроса в кавычки; в противном случае произойдет расширение макроса.
Так как работает deprecated
pragma над всеми соответствующими идентификаторами и не учитывает подписи, это не лучший вариант для отмены определенных версий перегруженных функций. Любое соответствующее имя функции, которое вставляется в область, активирует предупреждение.
Мы рекомендуем использовать атрибут C++14 [[deprecated]]
, если это возможно, вместо атрибута deprecated
pragma. Модификатор объявления, определенный корпорацией __declspec(deprecated)
Майкрософт, также является лучшим выбором во многих случаях, чем deprecated
pragma. Атрибут [[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
}