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

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
<2010年11月>
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>
            国产综合视频在线观看| 午夜精品视频在线观看| 一区二区三区四区精品| 欧美日韩在线免费| 亚洲影院色在线观看免费| 先锋亚洲精品| 亚洲电影观看| 欧美日本免费一区二区三区| 亚洲私拍自拍| 美女脱光内衣内裤视频久久影院 | 一区二区三区视频在线| 欧美专区在线| 亚洲激情在线| 国产精品自在线| 免费成人毛片| 亚洲午夜在线视频| 欧美不卡在线视频| 中文久久精品| 一色屋精品视频免费看| 欧美日韩亚洲一区| 久久久久国产成人精品亚洲午夜| 亚洲国产精品一区二区第一页 | 久久国产黑丝| 亚洲精品字幕| 男人的天堂亚洲在线| 亚洲影院污污.| 136国产福利精品导航网址| 欧美香蕉大胸在线视频观看| 久久久久青草大香线综合精品| 99www免费人成精品| 免费亚洲电影在线| 香蕉成人久久| 中文一区二区| 91久久精品久久国产性色也91| 国产欧美韩国高清| 欧美日韩免费在线视频| 久久野战av| 性欧美激情精品| 一区二区三区欧美亚洲| 亚洲成人资源网| 久久一二三四| 欧美一级黄色录像| 亚洲午夜免费视频| 亚洲免费成人| 亚洲激情视频在线播放| 一区二区亚洲精品国产| 国产日韩精品一区二区三区| 欧美日韩亚洲一区二区三区四区 | 国产亚洲精品久久久久久| 欧美日韩视频专区在线播放| 老司机精品导航| 久久riav二区三区| 亚洲永久免费| 亚洲一区二区毛片| 亚洲伦理在线免费看| 亚洲国产天堂久久国产91| 欧美成人久久| 欧美超级免费视 在线| 久久综合成人精品亚洲另类欧美| 欧美一区二区性| 亚洲欧美日韩视频一区| 亚洲伊人久久综合| 国产精品99久久久久久白浆小说 | av不卡免费看| 日韩一级二级三级| 99re视频这里只有精品| 日韩视频一区二区三区在线播放免费观看 | 久久综合给合久久狠狠狠97色69| 欧美一二三区精品| 欧美中文在线字幕| 久久精品在线观看| 久久九九精品| 麻豆91精品| 欧美黄色日本| 欧美日本乱大交xxxxx| 欧美三区美女| 国产精品夜夜夜一区二区三区尤| 国产精品日韩欧美大师| 国产伦理精品不卡| 狠狠噜噜久久| 亚洲国产精品久久久久秋霞影院 | 亚洲午夜视频| 亚洲欧美日韩另类| 久久精品国产77777蜜臀| 久久久久久亚洲综合影院红桃 | 夜夜嗨网站十八久久| 亚洲一区二区三区四区五区午夜 | 亚洲丰满少妇videoshd| 亚洲乱码精品一二三四区日韩在线 | 免播放器亚洲| 亚洲日本中文| 亚洲欧美国产日韩天堂区| 欧美一区二区三区播放老司机| 久久精品亚洲精品| 欧美激情精品久久久久久| 国产精品草莓在线免费观看| 国产亚洲欧美激情| 亚洲欧洲日本mm| 午夜精品成人在线| 久久影院午夜论| 亚洲欧洲视频在线| 亚洲一区二区三区欧美| 久久久水蜜桃| 欧美视频日韩| 激情综合色丁香一区二区| 99精品国产一区二区青青牛奶| 亚洲综合色在线| 免费精品视频| 国产精品99久久不卡二区| 久久黄金**| 欧美日韩少妇| 在线欧美日韩国产| 亚洲欧美清纯在线制服| 欧美二区在线观看| 亚洲欧美日韩一区二区三区在线| 久久综合色婷婷| 国产麻豆精品theporn| 亚洲精品永久免费| 久久国产精品黑丝| 日韩视频免费在线观看| 久久久久久久久久看片| 国产精品欧美日韩| 亚洲精品久久久久| 久久免费的精品国产v∧| 在线视频欧美日韩| 欧美成人精品在线观看| 国产综合久久久久久| 亚洲免费小视频| 亚洲国产一区二区三区青草影视| 欧美一区二区三区免费在线看| 欧美色精品在线视频| 最新亚洲电影| 免费久久99精品国产自| 亚洲在线成人| 国产精品啊v在线| 99国产精品久久久久久久久久| 久久先锋资源| 性欧美videos另类喷潮| 国产精品久久国产愉拍| 一本一本久久| 91久久精品久久国产性色也91 | 国内精品视频在线播放| 亚洲欧美日韩久久精品| 日韩午夜一区| 欧美日韩精品系列| 亚洲精品永久免费| 亚洲高清不卡在线| 老司机精品视频网站| 一区在线影院| 美女黄毛**国产精品啪啪 | 日韩午夜电影av| 欧美激情一区二区三区在线视频| 久久久久久黄| 伊人久久亚洲影院| 裸体素人女欧美日韩| 久久久精品午夜少妇| 国内精品免费在线观看| 久久午夜视频| 久久亚洲综合网| 亚洲国产精品电影在线观看| 欧美刺激性大交免费视频| 玖玖国产精品视频| 91久久精品美女高潮| 亚洲电影在线免费观看| 欧美不卡视频一区| 99综合精品| 一区二区欧美激情| 国产精品美女在线| 久久精品日韩| 久久久精品免费视频| 亚洲国产小视频在线观看| 亚洲高清视频一区| 欧美另类久久久品| 亚洲欧美乱综合| 性一交一乱一区二区洋洋av| 国产在线精品自拍| 欧美成人在线免费观看| 欧美激情综合在线| 亚洲免费小视频| 久久国产精品亚洲77777| 亚洲电影免费在线 | 在线综合亚洲欧美在线视频| 一区二区三区国产精华| 国产日韩欧美黄色| 模特精品在线| 欧美色视频在线| 久久精品亚洲一区| 欧美 日韩 国产在线| 亚洲一区三区在线观看| 欧美一区久久| 日韩视频亚洲视频| 校园激情久久| 亚洲美女视频网| 亚洲男人天堂2024| 亚洲国产一区二区三区青草影视 | 母乳一区在线观看| 亚洲欧美日韩成人| 久久免费的精品国产v∧| 制服诱惑一区二区| 久久精品99国产精品|