我们在我工作的地方使用“类 COM”模型,因为我们通常遵循 COM 规则,但不执行 MIDL 编译,也不针对 c/c++ 以外的其他语言。因此,我知道我总是可以根据自己的需要改变规则,但我尽量不要这样做,因为我们可能希望有一天真正符合 COM 标准,如果那一天到来,我们希望它尽可能轻松。
当有人从特定接口使用特定方法编译代码时,我想打印出警告。在 c++ 中(我们只支持微软编译器),我们会__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(deprecated)
使用纯虚拟方法是否有我不知道的限制?
再次感谢