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

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 閱讀(555) 評論(0)  編輯 收藏 引用 所屬分類: VC_MFC
<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用鏈接

留言簿(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>
            夜夜夜精品看看| 欧美影片第一页| 欧美成人a∨高清免费观看| 在线成人av网站| 久久精品一级爱片| 久久精品夜色噜噜亚洲a∨| 亚洲第一主播视频| 欧美高清视频在线| 欧美 日韩 国产精品免费观看| 激情六月婷婷久久| 欧美成人免费播放| 欧美精品久久久久久| 亚洲一区二区三区免费在线观看| 一本色道久久综合| 国产欧美一区二区白浆黑人| 久久久久久有精品国产| 美日韩精品免费观看视频| 亚洲精品少妇30p| 亚洲视频一二区| 国内精品视频在线观看| 亚洲第一天堂无码专区| 欧美视频一区二| 久久久久国产一区二区三区| 欧美黄污视频| 欧美一区二区三区在线播放| 免费观看日韩| 亚洲欧美一区二区视频| 久久影院亚洲| 亚洲欧美视频在线观看视频| 久久嫩草精品久久久精品| 宅男噜噜噜66一区二区| 先锋影音国产一区| 亚洲美女诱惑| 欧美在线免费观看视频| 亚洲久色影视| 久久成人免费网| 正在播放亚洲| 久热精品视频在线| 欧美一站二站| 欧美视频中文字幕| 欧美freesex8一10精品| 国产美女精品视频| 日韩网站在线看片你懂的| 在线精品国精品国产尤物884a| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久久久久一区二区三区| 一本久久精品一区二区| 久久视频在线看| 久久精品国产一区二区三区| 欧美日韩日本视频| 欧美激情第4页| 精品动漫3d一区二区三区免费 | 久久精品国产免费| 欧美国产成人在线| 蜜桃久久av| 国外成人免费视频| 亚洲自拍偷拍网址| 亚洲自拍电影| 欧美天天视频| 99精品国产高清一区二区| 亚洲日本va午夜在线影院| 久久伊人免费视频| 久久久亚洲一区| 国产欧美日韩亚洲一区二区三区| 一区二区三区视频观看| 亚洲一区欧美一区| 欧美全黄视频| 亚洲美洲欧洲综合国产一区| 一区二区三区欧美在线观看| 欧美精品久久久久久久| 亚洲黄色小视频| 99精品国产一区二区青青牛奶| 欧美不卡视频一区发布| 欧美国产欧美亚州国产日韩mv天天看完整| 国产欧美日韩精品在线| 午夜一区二区三区不卡视频| 欧美一区中文字幕| 国产欧美日韩一级| 欧美诱惑福利视频| 美脚丝袜一区二区三区在线观看| 在线成人黄色| 欧美国内亚洲| 99精品国产高清一区二区| 亚洲欧美日韩国产中文在线| 国产精品视频男人的天堂| 性做久久久久久久免费看| 久久精品在线免费观看| 一色屋精品视频在线观看网站| 久久中文精品| 日韩视频一区二区三区在线播放| av成人免费在线| 国产精品一二一区| 久久久人成影片一区二区三区观看 | 国产精品高清在线观看| 午夜视频久久久| 欧美大胆成人| 亚洲一区二区不卡免费| 国内精品美女av在线播放| 久热爱精品视频线路一| 中文在线资源观看网站视频免费不卡| 午夜视频在线观看一区| 亚洲高清一区二区三区| 欧美性事在线| 久久婷婷久久| 亚洲少妇诱惑| 欧美激情一区二区三区四区| 亚洲男人av电影| 精品电影一区| 国产精品美女久久久浪潮软件 | 亚洲国产精品一区制服丝袜| 亚洲在线国产日韩欧美| **性色生活片久久毛片| 欧美系列亚洲系列| 久久综合九色综合网站| 在线综合亚洲| 亚洲国产成人久久| 久久精品视频在线| 这里只有精品丝袜| 伊人狠狠色丁香综合尤物| 国产精品久久久久久久久婷婷| 久久午夜精品| 性亚洲最疯狂xxxx高清| 在线视频一区二区| 亚洲第一主播视频| 久久青青草原一区二区| 欧美一级理论片| 一本一本大道香蕉久在线精品| 精东粉嫩av免费一区二区三区| 国产精品久久久久9999| 欧美精品性视频| 麻豆freexxxx性91精品| 欧美影院在线播放| 亚洲一区二区欧美| 在线亚洲欧美视频| 亚洲青涩在线| 亚洲激情视频在线| 欧美不卡在线视频| 麻豆久久久9性大片| 久久久久久久波多野高潮日日| 亚洲综合另类| 亚洲午夜国产成人av电影男同| 亚洲美女黄色| 亚洲黄一区二区| 亚洲国产精品久久久久秋霞影院| 国模私拍一区二区三区| 国产亚洲高清视频| 国产午夜精品麻豆| 国产综合亚洲精品一区二| 国产三级欧美三级日产三级99| 国产欧美日韩亚州综合| 国产欧美视频在线观看| 国产精品自拍视频| 国产一区二区三区在线观看视频| 国产色综合天天综合网| 国内精品伊人久久久久av一坑| 国产综合网站| 激情校园亚洲| 亚洲黄色天堂| 亚洲精品中文字幕在线观看| 日韩一级片网址| 99视频一区二区三区| 亚洲视频在线播放| 性色av一区二区三区在线观看| 欧美一区二区三区精品电影| 久久久久久久久一区二区| 美女视频黄a大片欧美| 欧美国产日韩精品免费观看| 亚洲区在线播放| 亚洲午夜久久久久久久久电影院| 亚洲欧美日韩久久精品| 久久日韩精品| 欧美视频在线观看一区| 国产欧美亚洲日本| 亚洲国产乱码最新视频| 亚洲调教视频在线观看| 久久高清免费观看| 欧美激情一级片一区二区| 一区二区三区精品在线| 久久精品中文字幕一区二区三区 | 亚洲免费观看高清在线观看| 亚洲在线免费| 欧美 日韩 国产在线| 国产精品mm| 影音先锋日韩有码| 在线一区二区三区做爰视频网站 | 亚洲影院高清在线| 久久一区二区三区av| 亚洲精品一区二区在线观看| 欧美在线91| 欧美日韩精品免费观看视一区二区| 国产精品久久久久久久午夜片| 激情六月婷婷久久| 亚洲一区二区三区四区五区黄| 蜜臀久久99精品久久久久久9| 日韩午夜在线电影| 久久久另类综合| 国产乱码精品一区二区三| 日韩视频在线观看国产| 久久久久国产一区二区| 亚洲性视频h|