浏览一些旧代码后,我注意到某些类是以这种方式定义的:

MIDL_INTERFACE("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
Classname: public IUnknown {
    /* classmembers ... */
};

但是,宏MIDL_INTERFACE定义为:
#define MIDL_INTERFACE(x) struct

在C:/MinGW/include/rpcndr.h中(在第17行附近)。宏本身显然是毫无意义的,那么此宏的真正目的是什么?

最佳答案

在Windows SDK版本中,宏扩展为

 struct __declspec(uuid(x)) __declspec(novtable)

第一个允许使用__uuidof关键字,这是从类型名获取接口(interface)的GUID的好方法。第二个抑制了v表的生成,该v表从不用于接口(interface)。空间优化。

08-17 03:03