我在midl中有一个COM对象接口,如
interface InterfaceName : IDispatch
{
[id(1)] HRESULT FunA(...);
[id(2)] HRESULT FunB(...);
[id(3)] HRESULT FunC(...);
}
ids是否需要连续?或者我可以将其定义为
interface InterfaceName : IDispatch
{
[id(1)] HRESULT FunA(...);
[id(3)] HRESULT FunB(...);
[id(5)] HRESULT FunC(...);
}
编译第二个版本似乎没问题,但是在运行时会出现任何问题吗?
答案 0 :(得分:3)
实际ID值是任意数字。它们不必是连续的;他们必须是独一无二的。按惯例,零和负值是reserved for certain special methods。除此之外,没有规则。