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

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>
            欧美一区二区三区电影在线观看| 亚洲精品系列| 久久久爽爽爽美女图片| 国产色婷婷国产综合在线理论片a| 午夜久久黄色| 欧美一区影院| 亚洲精品国产精品乱码不99| 91久久久亚洲精品| 欧美日韩精品免费| 午夜久久久久久| 久久久久天天天天| 亚洲精一区二区三区| 亚洲图片在线观看| 在线观看日韩www视频免费 | 国产精品久久网| 久久gogo国模裸体人体| 久久久国产亚洲精品| 最新日韩在线| 亚洲一区二区综合| 激情久久中文字幕| 一本久道久久综合婷婷鲸鱼| 国产视频一区二区在线观看 | 免费亚洲电影在线| 欧美日韩在线第一页| 噜噜噜噜噜久久久久久91| 欧美韩日一区二区三区| 久久成人国产| 欧美日本韩国一区| 美女视频黄 久久| 国产精品爱啪在线线免费观看| 久久午夜电影| 国产精品二区影院| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美国产日韩在线| 国产精品爽爽ⅴa在线观看| 亚洲第一搞黄网站| 国产婷婷成人久久av免费高清| 亚洲国产电影| 伊人成综合网伊人222| 亚洲在线视频免费观看| 亚洲精品美女91| 久久精品72免费观看| 亚洲一区欧美一区| 欧美极品aⅴ影院| 免费视频一区二区三区在线观看| 国产精品视频xxx| 一本久久综合亚洲鲁鲁| 亚洲美女av网站| 蜜臀久久99精品久久久画质超高清 | 性欧美精品高清| 亚洲一区激情| 一本色道久久88综合亚洲精品ⅰ| 久久久久久9999| 久久精品一本| 国产亚洲精品bv在线观看| 一区二区久久久久| 一区二区三区视频在线观看| 欧美激情aaaa| 91久久精品视频| 亚洲乱码国产乱码精品精天堂| 久久蜜桃香蕉精品一区二区三区| 久久av一区二区三区漫画| 国产精品qvod| 亚洲一区二区精品在线观看| 亚洲一区亚洲| 国产精品久久久久毛片软件| 亚洲乱码一区二区| 99精品99| 国产精品v欧美精品v日韩| 99精品欧美一区| 亚洲欧美日韩在线一区| 国产精品进线69影院| 中文亚洲免费| 性欧美xxxx大乳国产app| 国产精品综合网站| 欧美一级久久久| 玖玖综合伊人| 最新国产成人av网站网址麻豆| 欧美成人免费全部| 亚洲精品美女在线| 亚洲免费在线| 黄色免费成人| 欧美激情一区二区三区成人| 亚洲精品欧洲| 午夜一区二区三区在线观看| 国产伦精品一区二区三区在线观看 | 你懂的视频一区二区| 亚洲高清免费视频| 欧美日韩精品欧美日韩精品一| 亚洲精品看片| 久久精品国产亚洲5555| 亚洲电影欧美电影有声小说| 欧美日韩久久久久久| 新片速递亚洲合集欧美合集| 欧美h视频在线| 一级日韩一区在线观看| 国产日韩欧美在线播放| 欧美激情视频一区二区三区免费| 在线亚洲+欧美+日本专区| 久久精品色图| 一本色道久久综合| 黄色精品一区| 欧美婷婷在线| 久久久噜噜噜久噜久久| 日韩视频免费观看高清在线视频 | 亚洲男人天堂2024| 欲色影视综合吧| 欧美偷拍另类| 欧美成人免费播放| 亚洲欧美日韩在线观看a三区 | 欧美一区二区精品| 日韩亚洲成人av在线| 韩日在线一区| 亚洲国产精品悠悠久久琪琪| 狠狠爱综合网| 欧美亚州韩日在线看免费版国语版| 久久激情视频免费观看| 99国产精品自拍| 欧美国产高潮xxxx1819| 欧美综合国产精品久久丁香| 9色精品在线| 最新亚洲一区| 精品成人一区二区三区| 国产精品视频男人的天堂| 欧美精品日韩三级| 米奇777在线欧美播放| 欧美在线影院在线视频| 亚洲视频在线观看| 亚洲毛片一区二区| 91久久一区二区| 欧美韩国一区| 欧美a级一区| 久久婷婷一区| 久久综合国产精品| 久久精品噜噜噜成人av农村| 性做久久久久久| 亚洲在线第一页| 亚洲女同精品视频| 一本色道久久88综合亚洲精品ⅰ | 国产精品一区二区在线| 国产精品久久久久久av福利软件 | 国产婷婷成人久久av免费高清| 国产精品亚洲产品| 国产精品日日做人人爱| 国产欧美日本一区视频| 国产欧美日韩视频在线观看| 国产精品亚洲综合色区韩国| 国产精品久久久久久av下载红粉| 欧美色123| 国产精品日本欧美一区二区三区| 国产精品一级| 国产欧美精品va在线观看| 国产一区 二区 三区一级| 悠悠资源网亚洲青| 亚洲国产高清一区二区三区| 亚洲人成毛片在线播放| 日韩视频不卡中文| 亚洲在线黄色| 久久九九久久九九| 欧美激情网友自拍| 亚洲欧洲在线一区| 在线亚洲一区二区| 午夜精品免费在线| 鲁大师影院一区二区三区| 欧美经典一区二区三区| 国产精品av免费在线观看| 国产区在线观看成人精品| 国内精品视频一区| 亚洲免费av电影| 午夜精品一区二区三区电影天堂 | 亚洲高清色综合| 亚洲制服av| 另类综合日韩欧美亚洲| 亚洲国产精品尤物yw在线观看| 在线综合亚洲欧美在线视频| 亚洲欧美日韩在线不卡| 欧美xxx在线观看| 国产精品视频男人的天堂| 亚洲国产高清在线观看视频| 一区二区三区日韩欧美| 久久久水蜜桃| 亚洲日本在线观看| 午夜视频精品| 欧美区一区二区三区| 国产人久久人人人人爽| 亚洲精品女人| 久久亚洲精选| 国产精品99久久不卡二区| 亚洲国产视频a| 久久久久久97三级| 亚洲国产高清视频| 亚洲欧美日韩精品久久| 欧美成在线观看| 国产亚洲亚洲| 亚洲一区在线观看免费观看电影高清| 久久久精品久久久久| 99人久久精品视频最新地址| 久久只有精品| 国产自产在线视频一区| 亚洲专区在线|