查看 宏展开有3种方法,只测过两种,最后一种没测试过
  1. 用GCC命令;
  2. 用VC自带的命令;
  3. Source Insight工具

1,在GCC下,可以使用命令-E
如下面的代码

#include  < objbase.h >
#include 
< initguid.h >

#undef   INTERFACE
#define  INTERFACE   IExample

DECLARE_INTERFACE_ (INTERFACE, IUnknown)
{
    STDMETHOD  (QueryInterface)        (THIS_ REFIID, 
void **) PURE;
    STDMETHOD_ (ULONG, AddRef)        (THIS) PURE;
    STDMETHOD_ (ULONG, Release)        (THIS) PURE;
    STDMETHOD  (SetString)            (THIS_ 
char *) PURE;
    STDMETHOD  (GetString)            (THIS_ 
char *, DWORD) PURE;
}
;


代码的作用先不用管,将它保存为test.h或其它格式的文件,命令行下输入
gcc -E test.h >>E:/out.txt
打开E盘的out.txt文件,在该文件的最下面可以看到如下的内容

typedef  struct  IExample  struct IExampleVtbl *lpVtbl; }  IExample; typedef  struct  IExampleVtbl IExampleVtbl;  struct  IExampleVtbl
{
 HRESULT(__attribute__((__stdcall__)) 
*QueryInterface) (IExample *const IID* constvoid **) ;
 ULONG(__attribute__((__stdcall__)) 
*AddRef) (IExample *) ;
 ULONG(__attribute__((__stdcall__)) 
*Release) (IExample *) ;
 HRESULT(__attribute__((__stdcall__)) 
*SetString) (IExample *char *) ;
 HRESULT(__attribute__((__stdcall__)) 
*GetString) (IExample *char *, DWORD) ;
}
;

__attribute__是gcc的关键字,用以描述变量属性。
2,在VC下,也是可以,在Project->Setting->C/C++/最下面的Project Option的最后面添加/P命令
Rebuild All后,会提示一些错误,没关系,在保存该project的目录下会有一个.i的文件,打开后
也可以在相应的位置找到跟out.txt相同的内容。
3,Source Insight 下也可以,不过没测试过