5

我在中间有一个 COM 对象接口,比如

interface InterfaceName : IDispatch
{
  [id(1)] HRESULT FunA(...);
  [id(2)] HRESULT FunB(...);
  [id(3)] HRESULT FunC(...);
}

id必须是连续的吗?或者我可以像这样定义它

interface InterfaceName : IDispatch
{
  [id(1)] HRESULT FunA(...);
  [id(3)] HRESULT FunB(...);
  [id(5)] HRESULT FunC(...);
}

编译第二个版本好像没问题,但是运行时会不会出现问题?

4

1 回答 1

3

实际 id 值是任意数字。它们不必是连续的;它们必须是独一无二的。按照惯例,零值和负值是为某些特殊方法保留的。除此之外,没有任何规则。

于 2014-08-01T14:25:45.243 回答