fra*_*mon 5 c++ com visual-studio-2010 deprecated
我正在使用"COM-like"模型,因为我们通常遵循COM规则,但不执行MIDL编译,也不使用c/c ++之外的其他语言.因此,我知道我总是可以根据自己的需要改变规则,但我尽量不这样做,因为我们可能希望有一天真正符合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;
}
Run Code Online (Sandbox Code Playgroud)
使用这种方法弃用方法时,在尝试使用OldMethod时根本没有编译器警告.我是否有使用__declspec(deprecated)纯虚方法的限制?
再次感谢
__declspec(deprecated)是MS C/C++编译器的源代码级功能,不会影响任何内容的二进制布局(ABI) - 因此用户不必重新编译.其结果是通过包含C++头文件向任何调用该方法的人发出编译时警告.它不会影响使用您的对象作为COM对象的人,而不包括您的标题,例如来自其他语言.我不相信COM/IDL本身提供类似的"弃用"属性.
总而言之,您也可以为C++用户的利益添加属性,但是如果您提供一般的COM使用者,他们将不得不依赖您提供的文档来了解该方法已被弃用.
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |