查看宏展開後的內容http://www.cppblog.com/yedy/articles/22882.html

來源:互聯網
上載者:User
查看 宏展開有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* const, void **) ;
 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 下也可以,不過沒測試過

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.