У меня есть код библиотеки, в котором есть устаревший код, от которого я хотел бы отказаться. Для этого я начал отмечать устаревшие методы как устаревшие. Там, где эти методы вызывают друг друга, я получаю предупреждения об устаревании, которые я бы предпочел не видеть (новая функциональность означает, что вам просто нужен один вызов, так как раскрывается меньше внутренностей работы классов).
Есть ли способ подавить предупреждение об устаревании для вызова с OldMethod
на OldMethodHelper
? ..или лучший способ сделать это вообще?
Например (в MyClass.h
):
public ref class MyClass
{
public:
[Obsolete]
void OldMethodHelper();
[Obsolete]
void OldMethod();
void NewMethod();
};
In MyClass.cpp
:
void MyClass::OldMethodHelper()
{
// Some old helper method that's called both from within this class and externally.
}
void MyClass::OldMethod()
{
OldMethodHelper(); // I don't want this call to raise a deprecation warning.
}
void MyClass::NewMethod()
{
// A new method which replaces the calls to both of the previous methods.
}
Код называется так:
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
MyClass m;
m.OldMethodHelper(); // This should raise a deprecation warning.
m.OldMethod(); // This should raise a deprecation warning.
m.NewMethod();
return 0;
}
Изменить. Я нашел еще один пост на SO, который предполагает использование #pragma warning(disable: 4996)
, возможен, но мне кажется, что это немного неуклюжий способ решить проблему:
void MyClass::OldMethod()
{
#pragma warning(push)
#pragma warning(disable: 4996) //4996 for _CRT_SECURE_NO_WARNINGS equivalent
OldMethodHelper(); // I don't want this call to raise a deprecation warning.
#pragma warning(pop)
}
Edit2 — внесены некоторые исправления/уточнения в пример кода.
MyClass.cpp
? Просто добавить#pragma warning(disable: 4996)
сразу после#includes
? Не нужно даже нажимать/выталкивать его. - person Dialecticus   schedule 27.07.2015