在浏览了一些旧代码之后,我注意到有些类是以这种方式定义的:
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行左右).宏本身显然完全没有意义,那么这个宏的真正目的是什么呢?
在宏扩展到的Windows SDK版本中
struct __declspec(uuid(x)) __declspec(novtable)
Run Code Online (Sandbox Code Playgroud)
第一个允许使用__uuofof关键字,这是从typename获取接口的guid的好方法.第二个禁止生成v-table,一个从未用于接口的表.空间优化.
| 归档时间: |
|
| 查看次数: |
3841 次 |
| 最近记录: |