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

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
<2009年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(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>
            国产麻豆成人精品| 欧美一二三区精品| 久久精品导航| 欧美中文字幕在线| 亚洲一区亚洲| 午夜精品久久久久久久99热浪潮| 一区二区欧美在线| 性欧美video另类hd性玩具| 亚洲女人天堂成人av在线| 欧美亚洲三级| 亚洲黄色在线看| 一区二区三区日韩欧美精品| 一区二区欧美日韩视频| 欧美一区二区三区在线视频 | 精品成人一区二区三区| 在线观看欧美成人| 亚洲一区国产精品| 久久综合色影院| 国产最新精品精品你懂的| 一区二区三区久久| 欧美福利专区| 免费短视频成人日韩| 亚洲卡通欧美制服中文| 亚洲免费在线观看| 欧美电影电视剧在线观看| 欧美专区第一页| 一本色道久久综合狠狠躁的推荐| 久久天堂国产精品| 国产免费亚洲高清| 亚洲午夜在线视频| 久久国产欧美精品| 一区二区三区视频在线观看| 欧美成人激情视频免费观看| 一区二区三区无毛| 久久亚洲影院| 久久综合狠狠综合久久综合88| 国产午夜精品麻豆| 久久久精品日韩| 美女日韩欧美| 最新成人在线| 亚洲精品国产欧美| 欧美天天综合网| 午夜欧美不卡精品aaaaa| 亚洲色图制服丝袜| 国产亚洲第一区| 欧美不卡在线视频| 欧美激情一区二区三区蜜桃视频| 亚洲另类黄色| 亚洲在线观看视频网站| 一区二区在线视频播放| 久久欧美肥婆一二区| 美女黄网久久| 亚洲欧美日韩高清| 一本久道综合久久精品| 亚洲欧美电影院| 在线高清一区| 亚洲在线观看视频网站| 亚洲区国产区| 久久国产精品久久久久久电车| 国产一区二区三区高清在线观看| 亚洲第一精品福利| 国产在线播精品第三| 亚洲视频免费观看| 在线成人激情| 欧美影片第一页| 午夜精品成人在线视频| 欧美女同在线视频| 欧美国产一区视频在线观看| 激情综合在线| 久久黄色小说| 久久久久国产成人精品亚洲午夜| 欧美日韩综合在线免费观看| 亚洲日本视频| 亚洲美女毛片| 欧美日韩一区二区欧美激情| 亚洲日韩视频| 亚洲欧美亚洲| 欧美香蕉大胸在线视频观看| 一区二区三区毛片| 亚洲综合精品一区二区| 国产精品久久一区主播| 一本色道久久88亚洲综合88| 香蕉乱码成人久久天堂爱免费 | 久久激情视频| 黄色成人在线观看| 欧美aa国产视频| 亚洲精品一区二区在线| 香蕉成人伊视频在线观看| 国产亚洲精品久| 久久精品一区二区三区中文字幕| 国产精品免费视频xxxx| 亚洲欧美另类久久久精品2019| 久久精品夜色噜噜亚洲aⅴ| 亚洲国产一成人久久精品| 国产精品国产三级国产专播品爱网| 99www免费人成精品| 久久久久久**毛片大全| 一本久久综合亚洲鲁鲁五月天| 国产精品久久久久99| 久久伊人免费视频| 久久国产精品第一页| 中文网丁香综合网| 农夫在线精品视频免费观看| 欧美一乱一性一交一视频| 最新日韩精品| 国内自拍视频一区二区三区| 国产精品久久久久三级| 欧美揉bbbbb揉bbbbb| 欧美成人资源网| 久久综合伊人77777麻豆| 亚洲欧美日韩一区二区三区在线| 亚洲毛片在线免费观看| 亚洲日韩欧美视频一区| 亚洲视频狠狠| 欧美一区二区在线免费播放| 午夜一区不卡| 美女黄网久久| 欧美三级资源在线| 国产欧美精品xxxx另类| 国产私拍一区| 亚洲国产精品一区二区久| 亚洲精品激情| 午夜精品网站| 免费看黄裸体一级大秀欧美| 男男成人高潮片免费网站| 欧美顶级少妇做爰| 99这里只有精品| 欧美主播一区二区三区美女 久久精品人 | 亚洲午夜影视影院在线观看| 亚洲特级片在线| 久久www成人_看片免费不卡| 久久人人爽爽爽人久久久| 亚洲国产精品久久久久婷婷老年| 日韩亚洲欧美一区二区三区| 亚洲欧美成人网| 免费日韩一区二区| 国产伦精品一区二区三区视频孕妇| 伊人色综合久久天天| 亚洲欧美国产精品va在线观看| 久久免费精品日本久久中文字幕| 最新国产精品拍自在线播放| 性色av一区二区三区| 欧美bbbxxxxx| 亚洲成人直播| 玖玖在线精品| 久久国产免费| 国产三级欧美三级日产三级99| 一本色道久久综合亚洲精品高清| 久久久久久高潮国产精品视| 亚洲在线日韩| 国产精品主播| 欧美在线免费看| 在线一区视频| 国产精品自拍三区| 久久久不卡网国产精品一区| 一区二区高清视频在线观看| 欧美日韩亚洲高清| 一区二区三区欧美在线观看| 野花国产精品入口| 国产精品久久久久久久久久三级| 亚洲免费在线视频| 香蕉国产精品偷在线观看不卡| 国产亚洲综合精品| 欧美成人精品一区| 欧美精品日日鲁夜夜添| 亚洲欧美在线一区二区| 亚洲欧美日韩综合国产aⅴ| 狠狠色伊人亚洲综合网站色| 欧美成人一区在线| 国产精品成人v| 欧美xxx成人| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩精品在线观看| 亚洲欧美国产高清| 男人的天堂亚洲在线| 午夜精品视频网站| 欧美刺激午夜性久久久久久久| 欧美一区观看| 国产精品久久久久久久久免费 | 欧美日韩不卡合集视频| 欧美亚洲免费| 欧美日韩一区在线视频| 美脚丝袜一区二区三区在线观看 | 久久爱另类一区二区小说| 欧美日本精品| 久久影视精品| 国产主播精品| 久久精品99无色码中文字幕| 亚洲视屏一区| 欧美亚洲成人精品| 艳女tv在线观看国产一区| 亚洲精品国产精品国自产观看| 久久久免费观看视频| 麻豆av一区二区三区久久| 国产一区二区三区在线观看精品 | 久久综合亚州| 你懂的视频一区二区| 亚洲人成高清| 欧美日韩综合另类| 亚洲欧美色一区|