winapi中毫无意义的'MIDL_INTERFACE'宏?

2 c++ winapi mingw

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

MIDL_INTERFACE("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
Classname: public IUnknown {
    /* classmembers ... */
};
Run Code Online (Sandbox Code Playgroud)

但是,宏MIDL_INTERFACE定义为:

#define MIDL_INTERFACE(x) struct
Run Code Online (Sandbox Code Playgroud)

在C:/MinGW/include/rpcndr.h(第17行左右).宏本身显然完全没有意义,那么这个宏的真正目的是什么呢?

Han*_*ant 9

在宏扩展到的Windows SDK版本中

 struct __declspec(uuid(x)) __declspec(novtable)
Run Code Online (Sandbox Code Playgroud)

第一个允许使用__uuofof关键字,这是从typename获取接口的guid的好方法.第二个禁止生成v-table,一个从未用于接口的表.空间优化.