【发布时间】:2012-05-25 23:41:34
【问题描述】:
我们在我工作的地方使用“类 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) 与纯虚拟方法一起使用是否有我不知道的限制?
再次感谢
【问题讨论】:
标签: c++ visual-studio-2010 com deprecated