青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0
這個技巧不是針對VC++ 6.0缺陷的,而是針對VC++擴展語法的。這個技巧的來由,是為了某些希望有一天有可能要脫離Visual C++環境進行開發的人員。為了脫離VC++,你需要謹慎使用它的所有擴展語法。例如本文討論的__uuidof。我們先來看看一個例子:
    class __declspec(uuid("B372C9F6-1959-4650-960D-73F20CD479BA")) Class;   
struct __declspec(uuid("B372C9F6-1959-4650-960D-73F20CD479BB")) Interface;

void test()
{
CLSID clsid=__uuidof(Class);
IID iid=__uuidof(Interface);
...
}


  這比起你以前定義uuid的方法簡單多了吧?可惜,這樣好用的東西,它只在VC++中提供。不過沒有關系,我們這里介紹一個技巧,可以 讓你在幾乎所有C++編譯器中都可以這樣方便的使用__uuidof。這里沒有說是所有,是因為我們使用了模板特化技術,可能存在一些比較“古老”的 C++編譯器,不支持該特性。

  也許你已經迫不及待了。好,讓我們來看看:

    #include <string>   
#include <cassert>

inline STDMETHODIMP_(GUID) GUIDFromString(LPOLESTR lpsz)
{
HRESULT hr;
GUID guid;
if (lpsz[0]=='{')
{
hr=CLSIDFromString(lpsz,&guid);
}
else
{
std::basic_string<OLECHAR> strGuid;
strGuid.append(1,'{');
strGuid.append(lpsz);
strGuid.append(1,'}');
hr = CLSIDFromString((LPOLESTR)strGuid.c_str(),&guid);
}
assert(hr==S_OK);
return guid;
}

template <class Class>
struct _UuidTraits {
};

#define _DEFINE_UUID(Class,uuid) \
template <> \
struct _UuidTraits<Class>{ \
static const GUID& Guid(){ \
static GUID guid=GUIDFromString(L## uuid); \
return guid; \
} \
}

#define __uuidof(Class) _UuidTraits<Class>::Guid()

#define DEFINE_CLSID(Class,guid) \
class Class; \
_DEFINE_UUID(Class,guid)

#define DEFINE_IID(Interface,iid) \
struct Interface; \
_DEFINE_UUID(Interface,iid)


  這樣一來,就已經模擬出一個__uuidof關鍵字。我們可以很方便進行uuid的定義。舉例如下:
    void test()   
{
CLSID clsid=__uuidof(Class);
IID iid=__uuidof(Interface);
...
}  


  在VC++中,為了與其他編譯器以相同的方式來進行uuid的定義,我們不直接使用__declspec(uuid),而是也定義DEFINE_CLSID, DEFINE_IID宏:

    #define DEFINE_CLSID(Class,clsid)           \   
class __declspec(uuid(clsid)) Class

#define DEFINE_IID(Interface,iid) \
struct __declspec(uuid(iid)) Interface


  這樣一來,我們已經在所有包含VC++在內的支持模板特化技術的編譯器中,提供了__uuidof關鍵字。通過它可以進一步簡化你在C++語言中實現COM組件的代價。

  附注:關于本文使用的C++模板的特化技術,詳細請參閱C++文法方面的書籍,例如《C++ Primer》。其實這個技巧在C++標準庫——STL中有一個專門的名字:traits(萃取),你可以在很多介紹STL的書籍中見到相關的介紹。

  轉注:因為自己以后寫的文章需要用到類似的技巧,因此先搬過來放這。


posted on 2008-07-19 16:01 chatler 閱讀(547) 評論(0)  編輯 收藏 引用 所屬分類: VC_MFC
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            夜久久久久久| 欧美人与性动交cc0o| 欧美电影免费观看| 久久在线免费视频| 免费在线日韩av| 亚洲韩国日本中文字幕| 亚洲风情亚aⅴ在线发布| 亚洲国产91精品在线观看| 亚洲高清在线播放| 亚洲无毛电影| 久久久久成人精品| 欧美精品久久久久久久久久| 欧美亚男人的天堂| 精品二区视频| 亚洲最新色图| 久久久久女教师免费一区| 欧美激情久久久久| 亚洲特级毛片| 欧美91精品| 国产欧美精品| 一本一道久久综合狠狠老精东影业 | 国产精品99一区二区| 国产精品久久久久久五月尺| 国语自产在线不卡| 亚洲精品一区二区在线观看| 亚洲午夜精品福利| 六月丁香综合| 亚洲永久在线| 欧美激情精品久久久六区热门| 国产精品电影在线观看| 一区二区自拍| 欧美有码在线视频| 亚洲美女网站| 老牛国产精品一区的观看方式| 国产精品mm| 亚洲福利一区| 欧美一区91| 99精品视频网| 欧美xart系列高清| 狠狠干狠狠久久| 欧美一区二区| 一区二区久久久久久| 欧美—级a级欧美特级ar全黄| 黄色欧美成人| 久久成人免费| 亚洲一区影音先锋| 国产精品99免视看9| 一本一道久久综合狠狠老精东影业 | 午夜国产欧美理论在线播放| 欧美 日韩 国产精品免费观看| 国产美女一区二区| 亚洲一级一区| 日韩午夜免费视频| 欧美日韩福利在线观看| 日韩视频一区二区在线观看| 欧美国产日本| 欧美成人精精品一区二区频| 亚洲国产精品久久久久| 麻豆精品视频在线观看| 性做久久久久久| 国产一区二区三区丝袜 | 久久人人爽人人爽爽久久| 亚洲影视九九影院在线观看| 国产精品chinese| 亚洲欧美在线看| 亚洲一区二区在线播放| 国产农村妇女精品一区二区| 午夜在线观看免费一区| 午夜久久久久久久久久一区二区| 国产精品蜜臀在线观看| 午夜久久久久| 亚洲男女自偷自拍| 影音先锋另类| 亚洲国产精品第一区二区| 噜噜噜在线观看免费视频日韩| 久久国产精品99国产| 狠狠色丁香婷婷综合影院| 美女国内精品自产拍在线播放| 久久精品国产综合精品| 在线精品观看| 亚洲日本中文| 国产精品美女999| 欧美在线关看| 久久不射中文字幕| 亚洲国产成人tv| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲一本大道在线| 国产美女诱惑一区二区| 蜜臀av一级做a爰片久久| 欧美顶级少妇做爰| 亚洲午夜av| 久久黄金**| 亚洲特级毛片| 久久久久久久高潮| 一区二区三区精品| 久久精品国产69国产精品亚洲| 亚洲精品日韩欧美| 午夜亚洲影视| 一区二区日韩伦理片| 欧美在线欧美在线| 99国产精品久久久久老师| 性欧美超级视频| 中文精品在线| 美女视频网站黄色亚洲| 久久成人综合网| 欧美日韩另类在线| 老司机一区二区三区| 欧美特黄一区| 亚洲欧洲精品一区二区三区不卡 | 国产在线日韩| 一本色道久久| 亚洲欧洲精品一区二区| 欧美制服丝袜第一页| 亚洲一区二区成人在线观看| 久久久之久亚州精品露出| 亚洲欧美久久| 欧美日韩免费观看一区三区| 欧美成人综合一区| 国产亚洲精品美女| 亚洲一区二区精品在线观看| 99热这里只有成人精品国产| 麻豆国产精品777777在线| 久久久精品tv| 国产亚洲精品7777| 亚洲婷婷免费| 亚洲一区二区视频在线| 欧美激情综合在线| 欧美国产日本在线| 久久女同精品一区二区| 亚洲激情成人在线| 久久精品国产69国产精品亚洲| 欧美一区二区视频97| 欧美揉bbbbb揉bbbbb| 亚洲精品一品区二品区三品区| 亚洲国产精品久久久久秋霞不卡| 久久av资源网站| 久久精品日韩欧美| 国产亚洲欧洲一区高清在线观看| 亚洲午夜精品17c| 亚洲综合精品四区| 国产精品你懂的| 午夜精品成人在线| 久久久久.com| 一区二区三区在线高清| 久久婷婷久久| 亚洲黄色免费| 一区二区欧美日韩视频| 欧美天堂在线观看| 亚洲中午字幕| 久久夜精品va视频免费观看| 亚洲第一视频| 欧美激情影音先锋| 宅男噜噜噜66一区二区| 欧美在线观看一区| 在线精品亚洲| 欧美日韩91| 午夜久久福利| 欧美大片免费观看| 亚洲视频国产视频| 国产午夜精品全部视频在线播放| 久久精品日产第一区二区| 欧美高清视频在线播放| 夜夜嗨一区二区| 国产视频精品xxxx| 免费久久99精品国产自在现线 | 久久se精品一区精品二区| 久久久久网址| 亚洲啪啪91| 国产农村妇女精品一区二区| 久久精品午夜| 亚洲免费激情| 久久久久久一区| 亚洲美女网站| 国产一区二区三区电影在线观看| 免费亚洲一区| 亚洲午夜羞羞片| 欧美国产视频在线| 亚洲欧美日韩国产一区二区三区| 一区免费视频| 国产精品麻豆va在线播放| 久热国产精品视频| 亚洲性色视频| 亚洲精品小视频| 久久亚洲午夜电影| 午夜精品福利一区二区三区av| 亚洲韩国青草视频| 国产亚洲精品久久飘花| 欧美日韩综合在线免费观看| 久久一日本道色综合久久| 亚洲一区久久久| 亚洲人午夜精品| 免费日韩成人| 久久久久久久91| 欧美亚洲三区| 亚洲一区二区精品在线| 亚洲精品极品| 在线观看国产日韩| 国产视频在线观看一区二区三区| 欧美午夜精品伦理| 欧美日韩小视频|