Мы используем «COM-подобную» модель, где я работаю, поскольку мы обычно следуем правилам COM, но не выполняем компиляцию MIDL и не ориентируемся на другие языки, кроме с/с++. Таким образом, я знаю, что всегда могу изменить правила в соответствии со своими потребностями, но я стараюсь этого не делать, поскольку когда-нибудь мы можем захотеть стать по-настоящему COM-совместимыми, и если этот день наступит, мы хотим, чтобы это было как можно безболезненнее.
Я хочу вывести предупреждение, когда кто-либо компилирует код с использованием определенного метода из определенного интерфейса. В c++ (мы поддерживаем только компилятор Microsoft) мы бы добавили __declspec(deprecated)
перед объявлением функции для достижения нашей цели.
Могу ли я просто добавить это перед объявлением моего метода интерфейса, или есть лучший, более COM-способ сделать это?
Я также хотел бы знать, достаточно ли только добавления __declspec(deprecated)
перед методом, чтобы заставить пользователей перекомпилировать (я хотел бы избежать этого, если это возможно).
Спасибо
Обновление
Я попытался использовать __declspec(deprecated)
перед объявлением моего метода следующим образом:
struct Interface : public IUnknown
{
__declspec(deprecated) virtual HRESULT __stdcall OldMethod
(
int Arg1;
int Arg2;
) = 0;
virtual HRESULT __stdcall NewMethod
(
//arguments...
) = 0;
}
При таком способе объявления метода устаревшим я не получаю предупреждения компилятора при все при попытке использовать OldMethod. Есть ли ограничение, о котором я не знаю, об использовании __declspec(устаревшего)
с чисто виртуальными методами?
Еще раз спасибо