浏览一些旧代码后,我注意到某些类是以这种方式定义的:
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)。空间优化。