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

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>
            久久精品一区二区| 亚洲理论在线观看| 欧美专区第一页| 亚洲欧美资源在线| 伊人成年综合电影网| 欧美.www| 欧美视频在线视频| 久久国产精品亚洲va麻豆| 久久久www| 亚洲免费成人av| 亚洲免费在线看| 在线高清一区| 一二美女精品欧洲| 国产一区二区欧美日韩| 欧美国产三区| 国产精品国产三级国产aⅴ无密码| 欧美在线日韩在线| 久热精品视频在线观看| 中文久久乱码一区二区| 午夜一区二区三视频在线观看 | 欧美一级专区| 亚洲电影免费在线观看| 一本色道久久88精品综合| 国产午夜一区二区三区| 最近中文字幕日韩精品| 国产精品入口麻豆原神| 亚洲国产成人精品女人久久久| 欧美视频精品一区| 牛夜精品久久久久久久99黑人| 欧美视频一区二区在线观看| 欧美视频在线看| 精品成人一区二区三区| 久久综合999| 国产精品黄视频| 欧美高清视频在线观看| 国产麻豆成人精品| 日韩天堂在线视频| 91久久精品国产91久久性色tv| 亚洲网站在线| 在线视频精品一| 久久久亚洲成人| 久久精品国产精品亚洲精品| 欧美日韩性视频在线| 免费永久网站黄欧美| 国产日韩欧美亚洲| 一区二区三区av| 99re热精品| 欧美大片第1页| 欧美大片免费久久精品三p| 黄网站免费久久| 午夜欧美大尺度福利影院在线看| 在线一区二区日韩| 欧美精品在线一区二区三区| 奶水喷射视频一区| 在线播放视频一区| 久久久久久久尹人综合网亚洲 | 亚洲精品国产精品国产自| 久久激情综合网| 久久久久一区二区三区| 国产性天天综合网| 香蕉视频成人在线观看 | 精品成人国产| 久久婷婷影院| 欧美韩日高清| 亚洲精品国产精品国产自| 美女黄毛**国产精品啪啪| 老司机aⅴ在线精品导航| 在线电影国产精品| 免费不卡欧美自拍视频| 亚洲丁香婷深爱综合| 亚洲人成在线播放| 欧美精品亚洲| 亚洲午夜高清视频| 欧美一区二区在线播放| 国产亚洲精品aa| 久久国内精品视频| 欧美国产国产综合| 99国产精品视频免费观看| 欧美日韩亚洲另类| 亚洲主播在线| 蜜桃伊人久久| 一本久久a久久精品亚洲| 欧美性色视频在线| 欧美一区二区视频在线| 免费久久99精品国产| 亚洲美女视频在线观看| 国产精品成人一区二区| 香蕉久久夜色精品国产| 欧美a级在线| 亚洲一区高清| 一区二区亚洲精品国产| 欧美人与性动交α欧美精品济南到| 一本色道久久综合亚洲精品不| 久久精品国产69国产精品亚洲| 欧美风情在线观看| 亚洲视频免费在线| 欧美99久久| 亚洲欧美另类久久久精品2019| 狠狠久久五月精品中文字幕| 欧美精品在线视频| 久久国产精品久久久久久久久久 | 亚洲国产欧美一区| 性色av一区二区怡红| 亚洲人成免费| 国产日韩欧美一区在线| 欧美激情一区在线观看| 欧美一级片一区| 一本在线高清不卡dvd | 久久久噜噜噜久久人人看| 99热在线精品观看| 韩国精品一区二区三区| 欧美手机在线视频| 欧美高清视频| 久久久亚洲欧洲日产国码αv| 亚洲视频在线视频| 亚洲精品一区二区三区福利| 久久亚洲图片| 久久9热精品视频| 在线一区二区日韩| 亚洲九九九在线观看| 一区二区亚洲精品国产| 国产欧美欧美| 国产精品裸体一区二区三区| 欧美—级高清免费播放| 噜噜噜久久亚洲精品国产品小说| 欧美亚洲尤物久久| 亚洲嫩草精品久久| 一区二区欧美视频| 亚洲精选视频免费看| 亚洲福利视频网站| 欧美大片免费看| 欧美成人午夜77777| 免费精品视频| 牛牛国产精品| 亚洲丶国产丶欧美一区二区三区| 久久亚洲精品网站| 蜜桃av久久久亚洲精品| 久久色在线播放| 另类人畜视频在线| 免费永久网站黄欧美| 美女亚洲精品| 欧美国产视频日韩| 欧美国产精品人人做人人爱| 欧美国产精品v| 亚洲国产精品va| 亚洲精品国产精品乱码不99 | 午夜欧美精品| 欧美中文字幕| 玖玖玖免费嫩草在线影院一区| 美国十次成人| 亚洲国产精品专区久久| 亚洲欧洲视频在线| 一本久久精品一区二区| 亚洲一区在线免费观看| 欧美一区二区成人6969| 久久久久久穴| 欧美精品国产一区二区| 欧美无乱码久久久免费午夜一区| 国产精品第一页第二页第三页| 国产精品久久久久久久久久尿| 国产欧美视频一区二区| 亚洲第一精品福利| 亚洲色图综合久久| 久久精品免费看| 亚洲第一精品电影| 这里只有精品丝袜| 久久国产精品亚洲va麻豆| 欧美激情bt| 国产女主播一区二区| 猫咪成人在线观看| 欧美亚洲成人精品| 激情久久久久久久| 亚洲网站在线播放| 久久久久久黄| 9l视频自拍蝌蚪9l视频成人| 亚洲欧美在线看| 欧美韩日高清| 国产亚洲精品综合一区91| 日韩亚洲国产欧美| 久久久久国内| 一本高清dvd不卡在线观看| 久久精品99国产精品| 欧美日韩不卡视频| 伊人夜夜躁av伊人久久| 亚洲一本视频| 亚洲电影免费在线| 欧美在线视频a| 欧美日韩一区二区三区四区在线观看 | av不卡免费看| 美女在线一区二区| 亚洲午夜黄色| 欧美成人亚洲成人| 国内精品一区二区三区| 亚洲一区二区在线免费观看视频| 牛牛影视久久网| 欧美在线视频网站| 国产精品日本| 亚洲视频免费在线| 亚洲精品乱码久久久久久按摩观| 久久蜜桃香蕉精品一区二区三区|