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
}