锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产日韩精品视频一区,香蕉久久一区二区不卡无毒影院,欧美在线免费一级片http://www.shnenglu.com/huaxiazhihuo/category/21252.htmlzh-cnWed, 05 Jul 2017 06:10:31 GMTWed, 05 Jul 2017 06:10:31 GMT60瀹屽鐨勮繍琛屾椂綾誨瀷淇℃伅http://www.shnenglu.com/huaxiazhihuo/archive/2017/07/05/215052.html鍗庡涔嬬伀鍗庡涔嬬伀Wed, 05 Jul 2017 03:45:00 GMThttp://www.shnenglu.com/huaxiazhihuo/archive/2017/07/05/215052.htmlhttp://www.shnenglu.com/huaxiazhihuo/comments/215052.htmlhttp://www.shnenglu.com/huaxiazhihuo/archive/2017/07/05/215052.html#Feedback0http://www.shnenglu.com/huaxiazhihuo/comments/commentRss/215052.htmlhttp://www.shnenglu.com/huaxiazhihuo/services/trackbacks/215052.html浼楁墍鍛ㄧ煡錛岀爜鐚垮啓浠g爜錛岃嚜鐒惰姹備弗璋ㄥ懆瀵嗭紝孌婁笉鐭ユ兂璞″姏涔熷緢閲嶈銆傛湰搴ч槄鐮佸嚑鍗佸勾錛屽緢鏄劅姒傚緢澶氱爜鐚跨殑鑴戞礊琚ぇ澶х閿紝椴滄湁浜鴻兘瓚婇浄姹犱竴姝ワ紝鐗瑰埆鏄痗++鐨勫悓瀛︼紝榪炲悓濮斿憳浼?xì)鐨勯偅涓鍧ㄨ佸ご瀛愶紝閮藉緢璁╀漢鏃犺鑷蟲瀬錛屽嚭鑷繖浜涗漢鐨勪綔鍝侊紝閮芥槸涓涓楸肩溂鐫涙牱瀛愶紝鍗冧漢涓闈紝姣棤鐏靛姩涔嬬敓瓚e彲璦銆俿tl錛宐oost榪欎簺搴撻兘鏄繖鏍峰瓙錛堣櫧鐒跺畠浠‘瀹炲彲浠ュ畬鎴愬ぇ澶氭暟鏃ュ父浠誨姟錛夛紝鏇村埆璇村叾浠栫殑搴擄紝娌℃湁浠涔堣浜鴻崇洰涓鏂頒箣澶勩?br />
灝辮璇村姩鎬佺被鍨嬩俊鎭繖鍧楋紝鍙堟垨鑰呰鏄弽灝勩傝嚜鐒?dòng)灱岃瑷鏈韓鎻愪緵鐨勫簾鐗﹖ype_info灝辨噿寰楄浜?jiǎn)锛岄櫎浜?jiǎn)璇佹槑c++涔熶笢鏂芥晥棰︼紝涔熻兘鏀寔鍔ㄦ佷俊鎭箣澶栵紝灝卞埆鏃犵敤澶勪簡(jiǎn)錛屾湁璋佷細(xì)姝e効鍏粡鐨勭敤type_info鍋氱偣姝e効鍏粡鐨勪簨鎯呭憿銆傚洜姝わ紝鍚勮礬浜洪┈綰風(fēng)悍涓婇樀錛岄兘瑕佸譏琛++鍦ㄨ繍琛屾椂綾誨瀷淇℃伅涓婄殑緙哄け銆傚洜涓虹被鍨嬬殑鍙嶅皠淇℃伅瀹炲湪澶噸瑕侊紝鎴栬呰錛屽弽灝勭殑鐢ㄦ涔嬪湴澶澶錛岃〃闈笂寰堝浜嬫儏涓嶉渶瑕佸弽灝勶紝鎴栬呭瓧闈唬鐮佷笂灝辯湅涓嶅埌鍙嶅皠鐨勭棔榪癸紝浣嗘槸鍐呴噷鐨勫疄鐜幫紝澶ф妸澶ф妸鐨勫弽灝勫湪鍙戝厜鍙戠儹銆俢++鍧氭寔涓嶅湪鍔ㄦ佷俊鎭笂緇欎簣涓鐐圭偣澶氫綑鐨勬敮鎸侊紝騫朵笉琛ㄧずc++灝變笉闇瑕佸弽灝勪簡(jiǎn)錛岀湅鐪嬫爣鍑嗗簱榪欎釜鏋佸姏鍥為伩鍔ㄥ鎬佺殑鍏歌寖錛屾槸涓涓庢牱鐨勫け璐ヤ綔鍝侊紝鍡紝榪欎釜浠ュ悗鍐嶈皥鍚с傚亣濡俿tl涓寮濮嬪氨娌℃湁濡傛澶у姏鎺掓枼鍔ㄥ鎬侊紝浣犵湅鐪嬪氨榪炲唴瀛樺垎閰嶇殑allocator閮藉彲浠ュ仛鍒伴潤(rùn)鎬佺被鍨嬩俊鎭噷闈紙鏈鏂扮増鐨刢++緇堜簬涔熻鎺ュ彈澶氭佺殑allocator錛宑++鐣屽眳鐒朵竴鐗囨鍛奸紦鑸烇紝鐪熸槸鎮(zhèn)插搥錛夛紝浠婃椂浠婃棩鐨刢++灝變笉浼?xì)鍦ㄥ緢澶氶鍩熶笂鍒板鍓插湴姹傚拰銆?br />
鎬葷殑鏉ヨ錛岀幇鍦ㄥ競(jìng)闈笂鐨刢++鍙嶅皠搴擄紝閮芥槸渚靛叆寮忥紝閮藉鐫mfc閭d竴濂楋紝閮芥槸瑕佹眰緇ф壙鑷竴涓熀綾籓bject錛岀劧鍚庢墠鑳藉澶栨彁渚涘弽灝勪俊鎭殑鍔熻兘錛屽厛涓嶈瀹冧滑鎻愪緵鐨勭被鍨嬩俊鎭槸鍚﹀畬澶囷紝榪欐牱瀛愬氨鎶婄敤閫斿箍娉涢檺鍒舵鍦ㄤ竴涓緢紿勫緢紿勭殑灝忓湀瀛愰噷闈簡(jiǎn)銆傝繖浜涘弽灝勫簱錛?銆佷笉鑳藉弽灝勫熀鏈被鍨嬶紝int銆乧har銆乨ouble銆乧onst char*銆?#8230;…絳夛紱2銆佷笉鑳藉弽灝勯潪緇ф壙鑷狾bject鐨刢lass鎴栬卻truct錛?銆佷篃涓嶈兘鍙嶅皠妯℃澘綾伙紝姣斿vector<int>銆乴ist<vector<vector<int>>>銆傝櫧鐒秚ypeid鍗冭埇寮遍浮錛屼絾涔熼潪涓鏃犳槸澶勶紝璧風(fēng)爜闈炰鏡鍏ャ佸鉤絳夈佸鎬併傛墍浠ワ紝鐞嗘兂鐨勫弽灝勶紝搴旇鍍廲++鍘熺敓鐨則ypeid閭f牱鏃犺壊鏃犲懗錛?銆侀潪渚靛叆寮忕殑錛?銆佸彲浠ュ鎵鏈夌殑綾誨瀷閮芥彁渚涘弽灝勶紝鍩烘湰綾誨瀷銆侀潪Object緋葷殑struct鎴栬卌lass銆乼emplate綾誨瀷鐨勶紱3銆佸鎬佺殑錛屽彧瑕佹敼綾誨瀷闇瑕佽繍琛屾椂鐨勭被鍨嬭瘑鍒紝閭d箞灝辮繑鍥炲叾鏈韓鐨勭被鍨嬶紙瀛愮被錛夛紝鑰岄潪瀛楅潰涓婄殑澹版槑綾誨瀷錛?銆佹敮鎸佺被鍨嬪弬鏁幫紝涔熷嵆鏄錛屼互綾誨瀷浼犻掔粰璇ュ嚱鏁版椂錛屽氨榪斿洖鐩稿簲鐨勭被鍨嬩俊鎭璞°?br />
璇村緱鍏蜂綋涓鐐癸紝鎴戜滑瑕佹眰鐨勫弽灝勫簱鏄繖鏍峰瓙鐨勩傚綋鐒?dòng)灱岄鍏堣鏈変竴涓被鍨嬩俊鎭璞ypeInfo錛岄噷闈㈣婊′簡(jiǎn)鍏充簬瀵逛簬綾誨瀷鐨勬墍鏈夎緇嗕俊鎭傚涓嬫墍紺猴細(xì)鍙互鐚滃埌榪欑鍙嶅皠涓嬫鏋訛紝鍙敮鎸佸崟緇ф壙錛岃繖鏄晠鎰忕殑銆?br />
    struct TypeInfo
    {
    
public:
        template
<typename Args>
        
void ConstructObject(void* obj, MemoryAllocator* alloc, Args&& args)const錛?br />        bool IsDerviedOf(const TypeInfo* base)const;

    
public:
        
virtual TIType GetTIType()const = 0;
        
virtual const InterfaceMap* GetInterfaces()const錛?br />        virtual jushort GetMemorySize()const錛?br />        virtual ConstText GetName() const錛?br />        virtual AString GetFullName()const錛?br />        virtual jushort GetAlignSize() const錛?br />        virtual ConstText GetSpaceName()const;
        
virtual const TypeInfo* GetBaseTypeTI()const;
        
virtual const TypeInfo* GetPointeedTI()const錛?br />        virtual size_t GetHashCode(const void* obj)const;
        
virtual bool IsValueType()const { return true; }
        
virtual bool IsClass()const { return true; }

        
virtual bool DoInitAllocator(void* obj, MemoryAllocator* memAlloc)const;
        
virtual bool NeedDestruct()const { return false; }
        
virtual void DoDefaultConstruct(void* obj)const;
        
virtual bool CanDefaultConstruct()const { return true; }
        
virtual void DoAssign(void* dest, const void* src)const;
        
virtual bool Equals(const void* objA, const void* objB)const;
        
virtual void DoDestruct(void* obj)const;
        
    };
鐒跺悗錛屽氨瑕佹湁涓涓嚱鏁癟ypeOf錛屽簲璇ユ槸涓や釜錛屼竴涓槸鏃犲弬鏁扮殑綾誨瀷妯℃澘鍑芥暟錛屽彲浠ヨ繖鏍瘋皟鐢紝TypeOf<type>()錛涗竴涓槸鏈変竴涓弬鏁扮殑綾誨瀷妯℃澘鍑芥暟錛屽彲浠ヨ繖鏍瘋皟鐢紝TypeOf(obj)銆備笉綆℃槸閭d竴涓紝鍏惰繑鍥炵粨鏋滈兘鏄痗onst TypeInfo*銆俆ypeOf鐨勮鍋氬埌鐨勪簨鎯呮槸錛屽浜庢瘡涓縐嶇被鍨嬶紝鏈変笖鍙湁涓涓敮涓鐨凾ypeInfo瀵硅薄涓庝箣瀵瑰簲錛屼笉綆℃槸template鐨勮繕鏄潪template鐨勶紱姣斿錛屼互涓嬬殑鍑犱釜鍒ゆ柇蹇呴』鎴愮珛銆?br />TypeOf<int>() == TypeOf<int>();
TypeOf<int>() == TypeOf(n);    //n涓烘暣鍨?br />TypeOf<vector<int>>() == TypeOf(nums);//nums鐨勭被鍨嬩負(fù)vector<int>
Object* a = new ObjectA; TypeOf(a) == TypeOf<ObjectA>();
鍏跺疄榪欓噷闈㈢殑鍘熺悊涔熸病浠涔堢濂囷紝鏃犻潪灝辨槸trait閰嶅悎sfine錛屾帴涓嬫潵灝卞叏閮ㄩ兘鏄嫤鍔涙椿錛屽氨鏄負(fù)姣忎竴縐嶇被鍨嬮兘涓撻棬鐗瑰寲涓涓緇嗘弿榪扮殑綾誨瀷瀵硅薄錛岀敤瀹忓彲浠ヨ妭鐪佸ぇ閲忕殑浠g爜銆備絾鏄暣涓弽灝勫簱錛屾湰搴у墠鍓嶅悗鍚庨噸鏋勪簡(jiǎn)鍗佸嚑嬈★紝鐜板湪涔熻繕鍦ㄩ噸鏋勪箣涓紝緇堢┒榪樻槸瑙e喅浜?jiǎn)寮鍙戜笂鎵閬囧埌鐨勫悇縐嶄簨鎯呫傛瘮濡傦紝搴忓垪鍖栵紙鏀寔鎸囬拡銆佹敮鎸佸鎬侊級(jí)銆佸璞′笌xml鐨勪簰鎹€佸璞′笌json鐨勪簰鎹€佹暟鎹簱琛ㄨ鍐欏璞°佹牸寮忓寲銆丄ny綾誨瀷銆侀潪渚靛叆寮忔帴鍙c佹秷鎭彂閫併佸瓧絎︿覆鐢熸垚瀵硅薄絳夌瓑銆?br />鍏跺疄鐜版柟寮忥紝姒傛嫭璧鋒潵錛屽氨鏄紩鍏ラ棿鎺ュ眰鍏冨嚱鏁癟ypeInfoImp涓撻棬鐢ㄤ簬榪斿洖涓涓被鍨媡ype錛宼ype閲岄潰鏈変竴涓狦etTypeInfo()鐨勫嚱鏁般傜劧鍚嶵ypeOf璋冪敤TypeInfoImp閲岀殑type鐨凣etTypeInfo()鏈緇堝緱鍒癟ypeInfo瀵硅薄銆備唬鐮佸涓嬫墍紺恒?br />
    template<typename Ty> struct TypeInfoImp
    {
        typedef Ty type;
        
static const bool value = THasGetTypeInfoMethod<Ty>::value;
    };

    template
<typename Ty>
    
struct TypeInfoImp<const Ty> : public TypeInfoImp<Ty>
    {
        typedef typename TypeInfoImp
<Ty>::type type;
        
static const bool value = TypeInfoImp<Ty>::value;
    };
    
    template
<typename Ty>
    
const TypeInfo* TypeOf()
    {
        typedef typename TypeInfoImp
<Ty>::type TypeInfoProvider;
        
return TypeInfoProvider::GetTypeInfo();
    }
    
    template
<typename Ty>
    
const TypeInfo* TypeOf(const Ty& obj)
    {
        typedef typename IsRttiType
<Ty>::type is_rtti;    //鍙堟槸闂存帴灞傦紝瀵瑰姩鎬佺被鍨嬪拰闈炲姩鎬佺被鍨嬪垎鍒鐞?/span>
        return ImpTypeOf(obj, is_rtti());
    }
    
    template
<>
    
struct TypeInfoImp < bool >
    {
        
static const bool value = true;
        typedef TypeInfoImp
<bool> type;
        
static TypeInfo* GetTypeInfo();
    };
        
    TypeInfo
* TypeInfoImp<bool>::GetTypeInfo()
    {
        
static TypeInfo* ti = CreateNativeTypeInfo<bool>("bool");
        
return ti;
    }
鍙兘鍙互鏈夌畝媧佺殑鏂瑰紡錛屾瘮濡備笉闇瑕佸紩鍏ypeInfoImp錛屼絾鏄疄闄呮渶緇堣瘉鏄嶵ypeInfoImp鐨勬柟寮忔渶鍏風(fēng)伒媧繪т篃鏈鑳借妭鐪佷唬鐮併傛渶璧風(fēng)爜錛屽畠鍦ㄨ嚜瀹氫箟鐨剆truct鎴栬卌lass灝卞緢鏂逛究錛屽彧瑕佹敼struct鍐呴儴鍖呭惈涓涓狦etTypeInfo()鐨勫嚱鏁幫紝瀹冨氨鍙互琚撼鍏ypeOf浣撶郴涓紝闈炲父鏂逛究銆傚浜庢ā鏉跨被鍨嬬殑TypeInfoImp錛屽氨瑕佺敤鍒板搱甯岃〃浜?jiǎn)銆傛瘮濡傦紝瀵逛簬std::paira鐨勭被鍨嬩俊鎭紝濡備笅瀹炵幇錛?br />    template<typename FstTy, typename SndTy>
    struct TypeInfoImp < std::pair<FstTy, SndTy> >
    {
        static const bool value = true;
        typedef TypeInfoImp < std::pair<FstTy, SndTy> > type;
        static TypeInfo* GetTypeInfo()
        {
            ParamsTypeInfo<FstTy, SndTy> args;
            return PodPair::LookupTemplateTypeInfo(args);
        }
    };
鎻愬彇鍏剁被鍨嬪弬鏁扮殑const TypeInfo*錛岀敓鎴愭暟緇勩傜敤姝ゆ暟緇勫埌PodPair鐨勫搱甯岃〃閲岄潰鏌ユ壘錛屽鏋滃搱甯岃〃涓互鏈夋綾誨瀷鏁扮粍鍙傛暟鐨勫璞″氨榪斿洖錛屽惁鍒欒鍒涘緩涓涓坊鍔犱竴鏉″搱甯屾潯鐩紝鐒跺悗榪斿洖銆傛瘡涓涓硾鍨嬬被鍨嬶紝姣斿vector錛宭ist錛宲air閮芥湁涓涓睘浜庤嚜宸辯殑鍝堝笇琛ㄣ?br />鎵撳畬鏀跺伐銆傚師鐞嗗緢綆鍗曪紝浣嗘槸瀵逛簬宸ヤ笟綰х殑鍙嶅皠搴擄紝瑕佽冭檻寰堝緇嗚妭錛屾瘮濡傦紝TypeInfo瀵硅薄鐨勫唴瀛樼鐞嗭紱鎬庝箞涓篹num綾誨瀷鐢熸垚涓鍫嗗瓧絎︿覆錛屼互鏀寔瀛楃涓插拰enume鍊肩殑浜掔浉杞崲錛涚敓鎴愬茍淇濆瓨class鐨勬瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟鎸囬拡錛涘懡鍚嶇┖闂寸殑鏀寔錛涗豢鐪烠#閲岄潰鐨刟ttribute錛涘浣曚互鏈鏂逛究鐨勬柟寮忕敓鎴愭垚鍛樺瓧孌墊垨鑰呮垚鍛樺嚱鏁頒俊鎭瓑絳夛紝涓鍙ヨ瘽錛屽氨鏄粬濡堢殑浣撳姏媧匯備絾鏄紝鍥炴姤鏄緢涓扮洓鐨勶紝榪欓噷鐨勮嫤鍔涙椿鍋氬畬涔嬪悗錛岀▼搴忕殑鍏朵粬鍦版柟涓婏紝鍩烘湰涓婏紝灝辨病鏈変粈涔堥噸澶嶇浉浼肩殑浠g爜錛屼竴鍒囩殑浣撳姏宸ヤ綔鍏ㄩ儴灝卞彲浠ュ帇鍦ㄧ被鍨嬩俊鎭繖閲屼簡(jiǎn)銆?/div>

]]>
棰勫鐞嗕箣姝f暣鍨?/title><link>http://www.shnenglu.com/huaxiazhihuo/archive/2017/07/04/215050.html</link><dc:creator>鍗庡涔嬬伀</dc:creator><author>鍗庡涔嬬伀</author><pubDate>Tue, 04 Jul 2017 06:21:00 GMT</pubDate><guid>http://www.shnenglu.com/huaxiazhihuo/archive/2017/07/04/215050.html</guid><wfw:comment>http://www.shnenglu.com/huaxiazhihuo/comments/215050.html</wfw:comment><comments>http://www.shnenglu.com/huaxiazhihuo/archive/2017/07/04/215050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/huaxiazhihuo/comments/commentRss/215050.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/huaxiazhihuo/services/trackbacks/215050.html</trackback:ping><description><![CDATA[<div>      铏界劧閫氳繃涓緋誨垪鐨勫鎶娣閥錛岃棰勫鐞嗕篃鍥劇伒瀹屽涓鎶婏紝浣嗘槸鐢ㄩ澶勭悊鏉ュ仛璁$畻錛岀湡鐨勫緢鍚冨姏涓嶈濂姐傚洜涓洪澶勭悊涓寮濮嬭璁″嚭鏉ョ殑鐩殑錛屽氨娌′粈涔堥噹蹇?jī)锛屽師鏈瑸兓呬粎鍙槸湄?fù)浜?jiǎn)鍋毥巰綆鍗曞崟鐨勬枃鏈浛鎹㈠伐浣滐紝騫舵病鏈夋兂榪囪鎴愪負(fù)姝e効鍏粡鐨勭紪紼嬭璦錛屽嵆渚挎槸鏈鏈緙╂按鐗堣剼鏈璦鐨勫姛鑳借姹傞兘杈句笉鍒般傚彧鏄悗鏉ワ紝瀹炲湪鏄ぇ閲忚姹傝鎵歸噺鑷姩鐢熸垚浠g爜錛岀壒鍒槸c++11涔嬪墠鐨勭増鏈帺浠涔堟ā鏉垮厓緙栫▼錛岄摵澶╃洊鍦扮殑瑕佹湁澶ч噺鐩鎬技鐨勪唬鐮併傝繖浜涗唬鐮佺敤鍏朵粬宸ュ叿鏉ョ敓鎴愶紝褰撶劧褰㈠紡浼?xì)鏇村姞婕備寒锛屼絾鏄缁垬q樻槸鐢ㄥ師鐢熺殑棰勫鐞嗘潵鍋氳繖縐嶄簨鎯呬細(xì)鏇村姞鐨勬柟渚匡紝鍚﹀垯姣忔淇敼錛岄兘瑕佽繍琛屼竴閬嶅閮ㄥ伐鍏鳳紝閮介夯鐑?chǔ)鍟婂Q佹湰浜烘槸鍊懼悜浜庣敤棰勫鐞嗘潵鐢熸垚浠g爜鐨勩傚彟澶栵紝c++11涔嬪悗錛岀殑紜師鏉ュ緢澶氶渶瑕佸畯鏉ョ敓鎴愪唬鐮佺殑鍦哄悎宸茬粡涓嶅繀瑕佷簡(jiǎn)錛屼絾鏄洜涓篶++11鐨勭被鍨嬫帹瀵艱兘鍔涘ぇ澶у姞寮轟簡(jiǎn)涔嬪悗錛屽彂鐜板張鏈変竴澶ф嘗鍦版柟鍙互鐢ㄥ畯鏉ョ敓鎴愪唬鐮佷簡(jiǎn)銆傚茍涓嶆槸璇碈++涓殑瀹忔槸蹇呬笉鍙皯涔嬬墿錛屼絾鏄敤浜?jiǎn)瀹忓Q岀湡鐨勫彲浠ュ噺灝戝緢澶氬緢澶氱殑閲嶅浠g爜錛岃搗鐮佺焊闈笂鐨勪唬鐮佹竻鐖戒簡(jiǎn)寰堝銆?nbsp;    <div>           </div>      棰勫鐞嗙殑鍘熺敓鏁版嵁綾誨瀷灝卞彧鏈夌鍙鳳紝鐒跺悗絎﹀彿鍙敮鎸?#鐨勫茍鎺ヨ繍綆楋紝鍚屾椂錛岄澶勭悊涔熻兘璇嗗埆騫舵帴鍚庣殑緇撴灉錛堝惁鍒欙紝騫舵帴榪愮畻灝辨病鎰忎箟浜?jiǎn)锛?jí)錛屽鏋滄槸瀹忓嚱鏁幫紝灝辮繘琛岃皟鐢ㄦ搷浣滐紝濡傛灉鏄畯絎﹀彿錛屽氨鏇挎崲鏂囨湰錛屽鏋滀粈涔堥兘涓嶆槸錛屽氨浠涔堥兘涓嶅仛錛屼繚鐣欑鍙楓備絾鏄繖鏍風(fēng)殑寮遍浮綾誨瀷錛屾樉鐒惰繙榪滀笉鑳芥弧瓚崇緇忓彌閬撶殑鐮佺尶闇瑕併傜粡榪囧ぇ閲忕殑瀹忕紪紼嬬殑灝濊瘯涔嬪悗錛屽彲浠ュ緢鑲畾涓鐐癸紝棰勫鐞嗛噷闈㈠彧鑳藉啀妯℃嫙鍑烘潵涓縐嶆暟鎹被鍨嬶紝閭e氨鏄鏁存暟錛岃櫧鐒墮氳繃琛ョ爜榪愮畻鏉ヤ豢鐪熻礋鏁幫紝浣嗘槸鐢變簬棰勫鐞嗛噷闈㈢殑絎﹀彿涓嶈兘鍖呭惈鍑忓彿(-)瀛楃錛屽綋鐒惰鑺卞ぇ鍔涙皵鎹i紦璐熸暣鏁頒篃鏄彲浠ョ殑錛屽彧鏄嬌鐢ㄤ笂涔熶笉鏂逛究涔熶笉鐩磋錛屾т環(huán)姣斾笉楂橈紝鍩烘湰涓婏紝蹇呴』鐢ㄥ畯鏉ョ敓鎴愪唬鐮佺殑鍦版柟錛岄兘鍙互涓嶉渶瑕佽礋鏁存暟鐨勩?br /><br /><div>     鍙﹀錛岄澶勭悊涔熸病鏈夊彉閲忕被鍨嬬殑姒傚康錛屼笉瑕佽寮虹被鍨嬶紝灝辮繛寮辯被鍨嬩篃涓嶆槸錛屽畬鍏ㄥ氨鏄棤綾誨瀷銆傛鏁存暟綾誨瀷鐨勬蹇靛叏闈犵爜鐚夸漢鑲夌紪璇戝櫒鏉ョ淮鎶わ紝涓涓驚鐜殑瀹忎唬鐮佺敓鎴愪竴鑸兘鏄潵鏉ュ洖鍥炰篃涓嶇煡閬撹皟鐢ㄤ簡(jiǎn)澶氬皯灞傚畯璋冪敤錛屼換浣曚竴涓湴鏂瑰嚭閿欙紝鏈夋椂鍊欐槸鍑犲惃瀵嗗瘑楹婚夯鐨勪腑闂村け璐ヤ唬鐮侊紙緙栬瘧鍣ㄧ殑棰勫鐞嗙紦鍐叉孩鍑猴紝寮冩鎶曢檷錛夛紝鏈夋椂鍊欏氨瀹屽叏娌℃湁杈撳嚭錛屾病鏈変換浣曚竴涓佺偣鐨勬彁紺猴紝綆鐩存槸澶ф搗鎹為拡鐨勬壘闂銆傚洜姝わ紝鍦ㄧ敤瀹忓驚鐜敓鎴愪唬鐮佹椂錛屽繀欏誨皬蹇?jī)缈季橕|紝姝ユ涓鴻惀錛屼笉寰椾笉鎰熸叏錛屾鍎垮叓緇忚璦閲岄潰鐨勭被鍨嬬湡鏄ソ涓滆タ鍟娿?/div><br />鍏跺疄錛屾暟鎹被鍨嬪茍涓嶉噸瑕侊紝閲嶈鐨勬槸鏁版嵁涓婅兘澶熸敮鎸佺殑榪愮畻闆嗗悎浠ュ強(qiáng)榪欎簺榪愮畻鑳借繍鐢ㄧ殑鍦哄悎銆?br />濂戒簡(jiǎn)錛屽洖鍒頒笂鏂囷紝鎴戜滑鐢╛ZPP_INC_N鎼炰簡(jiǎn)10涓暟錛岄氳繃澶嶅埗綺樿創(chuàng)錛屽彲浠ユ妸N澧炲姞鍒?55銆傚疄闄呰繍鐢ㄤ腑錛屽畬鍏ㄨ凍澶熺敤浜?jiǎn)銆?br />#define _ZPP_INC_JOIN(_A, _B) _ZPP_INC_JOIN_IMP1(_A, _B)<br />#define _ZPP_INC_JOIN_IMP1(_A, _B) _ZPP_INC_JOIN_IMP2(~, _A##_B)<br />#define _ZPP_INC_JOIN_IMP2(p, res) res<br /><br />#define PP_INC(x, ) _ZPP_INC_JOIN(_ZPP_INC_, x)<br />#define _ZPP_INC_0         1<br />#define _ZPP_INC_1         2<br />#define _ZPP_INC_2         3<br />#define _ZPP_INC_3         4<br />#define _ZPP_INC_4         5<br />#define _ZPP_INC_5         6<br />#define _ZPP_INC_6         7<br />#define _ZPP_INC_7         8<br />#define _ZPP_INC_8         9<br />#define _ZPP_INC_9         10<br />...<br />#define _ZPP_INC_255       256<br /><br />鍚屾牱鐨勬柟寮忥紝鍐嶅娉曟場(chǎng)鍒禤P_DEC錛屼粠256寮濮嬶紝涓鐩撮掑噺鍒?涓烘銆傚浜庡ぇ浜?56鐨勬暟錛屽氨涓嶆敮鎸佷簡(jiǎn)錛岄偅灝遍兘鏄湭瀹氫箟鎿嶄綔銆傝繖鏍峰瓙錛岄氳繃PP_INC(n)錛屽氨寰楀埌n+1錛涜孭P_DEC(n)錛屽垯鏄痭-1銆傛瘮濡侾P_INC(PP_DEC(9))錛屽叾緇撴灉鑲畾鏄?浜?jiǎn)銆傚緢濂斤紝榪欐牱瀛愶紝鍦ㄩ澶勭悊涓氨瀹炵幇浜?jiǎn)鑷劧鏁拌嚜澧?鍜岃嚜鍑?鐨勮繍綆椾簡(jiǎn)銆傚彟澶栵紝瀵逛簬澶т簬256鐨勬暟錛屾瘮濡?12浼犻掔粰PP_INC錛屽氨鍙緱鍒頒竴涓猒ZPP_INC_512鐨勭鍙鳳紝瀹屽叏娌℃湁浠諱綍鎰忎箟銆?br /><br />鐒跺悗錛屼袱涓嚜鐒舵暟鏄惁鐩哥瓑鐨勫垽鏂紝涔熼潪甯擱噸瑕侊紝蹇呴』鏀寔銆備絾鏄紝鍦ㄦ涔嬪墠錛岃瀹炵幇涓涓畯鍑芥暟PP_NOT錛岀敤鏉ュ垽鏂叆鍙傛槸鍚︿負(fù)0銆備負(fù)0鐨勮瘽錛屽垯鍑芥暟榪斿洖1錛屽惁鍒欙紝灝辮繑鍥?銆備篃鍗蟲槸錛?br />PP_NOT(0) == 1<br />PP_NOT(23) == 0錛屾垨鑰?PP_NOT(var) == 0銆?br />璁頒綇錛岄澶勭悊鎻愪緵緇欐垜浠殑鍘熺敓綾誨瀷灝卞彧鏈夌鍙峰拰##騫舵帴榪愮畻錛岄櫎姝や箣澶栵紝鍒棤浠栫墿銆傚ソ鍍忓伐鍏峰お綆闄嬶紝鑳藉畬鎴愮洰鐨勫悧錛熶笉寰椾笉浣╂湇鏈変簺鐮佺尶鐨勮剳媧炪備互涓嬩唬鐮佹槸榪欐牱榪愪綔鐨勶紝鍋囪PP_NOT鐢熸垚浠ヤ笅鐨勮皟鐢ㄥ艦寮忥紝鍏堜笉綆P_ARG1錛岃嚦浜庣鍙穨錛屾槸榪欐牱瀛愮殑錛屽彲浠ョ湅鎴愭櫘閫氱殑鍙橀噺鍚嶅瓧錛屽畠?yōu)鏄崰浣嵔W︼紝鍥犱負(fù)棰勫鐞嗗彧璇嗗埆閫楀彿(,)錛屽拰灝忔嫭鍙鳳紝鑷充簬鍏朵粬絎﹀彿錛屽畬鍏ㄦ棤瑙嗭紝閭d簺鏄疌/C++緙栬瘧闃舵鎵嶅叧蹇?jī)鐨劷W﹀彿銆?br />PP_NOT(0) = PP_ARG1(~, 1, 0)<br />PP_NOT(n) = PP_ARG1(_ZPP_NOT_n, 0)<br />鐒跺悗錛岃PP_ARG1鍙栫浜屼釜鍙傛暟錛堢爜鐚跨殑璁℃暟鏄粠0寮濮嬬殑錛屼篃鍗蟲槸錛?鍗蟲槸1錛?鍗蟲槸2錛夛紝灝卞畬鎴愪換鍔′簡(jiǎn)銆傝嚦浜巁ZPP_NOT_n鏄粈涔堥錛岄偅涓彧鏄腑闂寸敓鎴愮殑涓存椂絎﹀彿錛屽彲浠ヨ垗寮冦傛垜浠彧闇瀵筥ZPP_NOT_0鍋氱壒鍒鐞嗐傚洜姝わ紝浠g爜鍙互榪欐牱鍐欎簡(jiǎn)銆侾P_PROBE()鐢ㄤ互鐢熸垚涓や釜鍏ュ弬<br />#define PP_PROBE() ~, 1<br />#define _ZPP_NOT_0 PP_PROBE()<br />#define PP_NOT(_X, ...) PP_IS(PP_JOIN(_ZPP_NOT_, _X))<br /># define PP_IS(...) PP_ARG1(__VA_ARGS__, 0)<br /><br />榪欐牱瀛愪箣鍚庯紝鏄劇劧PP_NOT(n)灝卞彲浠ュ彉鎴怭P_ARG1(_ZPP_NOT_n, 0)鐨勫艦寮忎簡(jiǎn)銆侾P_NOT涓嶆槸鍙渶涓涓叆鍙傚悧錛熶負(fù)浣曞悗闈㈣繕瑕佸甫鐪佺暐鍙鳳紝綰補(bǔ)鏄負(fù)浜?jiǎn)鍚庨潰鍚効U嶅彉鎬佺殑榪愮敤錛屽彇鎮(zhèn)︾紪璇戝櫒銆傚凡緇忕敤瀹忔潵鍐欎唬鐮佷簡(jiǎn)錛屽氨涓嶅繀鍐嶉伒瀹堜粈涔堟竻瑙勬垝寰嬶紝鍙鑳藉畬鎴愪換鍔″氨琛屼簡(jiǎn)銆?br /><br />鑷充簬PP_ARG1鐨勫疄鐜幫紝灝卞緢綆鍗曚簡(jiǎn)錛屽涓嬫墍紺猴紝<br />#define PP_ARG0(_0, ...) _0<br />#define PP_ARG1(_0, _1, ...) _1<br />#define PP_ARG2(_0, _1, _2, ...) _2<br /><br />鐒跺悗閫氳繃涓ゆ鍙栧弽鐨勫嚱鏁幫紝鍐嶈ˉ涓婂嚱鏁癙P_BOOL錛屽鏋滃叆鍙?gt;0錛屽氨榪斿洖1錛屽惁鍒欒繑鍥?錛岀被浼間簬鏁村瀷鍒癰ool鐨勫己鍒剁被鍨嬭漿鎹€?br />#define PP_BOOL(_X, ...) PP_NOT(PP_NOT(_X))<br /><br />鏈変簡(jiǎn)榪欎簺鐨勯摵鍨箣鍚庯紝瑕佹瘮杈冧袱涓嚜鐒舵暟鏄惁鐩哥瓑錛屽氨綆鍗曚簡(jiǎn)銆傚叾瀹炴病浠涔堢縐樼殑錛屽氨鏄拡瀵逛粠0鍒?55錛岄噸澶?56涓互涓嬪艦寮忕殑#define璇彞錛?br />#define    _ZPP_0_EQUALS_0        PP_PROBE()<br />#define    _ZPP_1_EQUALS_1        PP_PROBE()<br />#define    _ZPP_2_EQUALS_2        PP_PROBE()<br />...<br />#define PP_EQUALS(x, y) PP_IS(PP_CONCAT4(_ZPP_, x, _EQUALS_, y))<br />PP_EQUALS灝辨槸灝嗗叆鍙傚茍鎺ユ垚_ZPP_x_EQUALS_y鐨勫艦寮忥紝鍙x鍜寉鐩稿悓錛屼篃鍗蟲槸璇達(dá)紝瀹冧滑鍦ㄤ笂闈㈢殑琛ㄦ牸涓紝閭d箞錛岄亾鐞嗗氨濡傚悓PP_NOT鐨勫疄鐜伴偅鏍鳳紝鏈鍚庣粨鏋滃氨鏄?浜?jiǎn)銆傚叾瀹烇紝棰勫鐞嗕腑娌℃湁鍒ゆ柇榪欑鐜╂剰錛屽彧鏈夎〃鏍鹼紝鍙湁騫舵帴錛屽彧鏈夋煡琛ㄣ傛墍璋撶殑鍥劇伒瀹屽錛岃鐧戒簡(jiǎn)錛屾病鏈夌巹铏氱殑錛屽氨鏄緩琛紝鐒跺悗鏌ヨ〃銆傚鐩哥瓑姣旇緝鍙栧弽PP_NOT錛岃嚜鐒跺氨寰楀埌涓嶇浉絳夌殑鍒ゆ柇鍑芥暟銆?br />#define PP_UN_EQUALS(x, y) PP_NOT(PP_IS(PP_CONCAT4(_ZPP_, x, _EQUALS_, y)))<br />鍐嶆寤鴻〃錛屽氨鍙互寰楀埌bool榪愮畻鐨勫嚱鏁幫紝鎴栦笌<br />#define PP_OR(a,b) PP_CONCAT3(_ZPP_OR_, a, b)<br />#define _ZPP_OR_00 0<br />#define _ZPP_OR_01 1<br />#define _ZPP_OR_10 1<br />#define _ZPP_OR_11 1<br /><br />#define PP_AND(a,b) PP_CONCAT3(_ZPP_AND_, a, b)<br />#define _ZPP_AND_00 0<br />#define _ZPP_AND_01 0<br />#define _ZPP_AND_10 0<br />#define _ZPP_AND_11 1<br /><br />鍐嶅噯澶囦竴寮犺〃鏍鹼紝灝嗗瓧鑺傛槧灝勫埌8涓簩榪涘埗浣嶃?br />#define _ZPP_BINARY_0    (0, 0, 0, 0, 0, 0, 0, 0)<br />#define _ZPP_BINARY_1    (0, 0, 0, 0, 0, 0, 0, 1)<br />#define _ZPP_BINARY_2    (0, 0, 0, 0, 0, 0, 1, 0)<br />#define _ZPP_BINARY_3    (0, 0, 0, 0, 0, 0, 1, 1)<br />#define _ZPP_BINARY_4    (0, 0, 0, 0, 0, 1, 0, 0)<br />...<br />鐒跺悗閫氳繃妯℃嫙璁$畻鏈虹粍鎴愬師鐞嗛噷闈㈢殑鍔犲噺涔橀櫎鐨勫師鐞嗭紝灝卞彲浠ュ疄鐜板洓鍒欒繍綆椾簡(jiǎn)銆傚浜?jiǎn)锛屾暣涓澶勭悊搴撶殑浠g爜閮藉湪鍘嬀~╁寘涓婏紝鍔熻兘姣攂oost鐨勯澶勭悊搴撳己澶氫簡(jiǎn)錛屼絾鏄唬鐮佸嵈灝戜簡(jiǎn)寰堝錛屼篃瀹規(guī)槗鐞嗚В澶氫簡(jiǎn)錛屾墍鏈変唬鐮佸湪vs涓嬮潰姝e父榪愯錛屽叾浠栧鉤鍙拌繕娌℃湁嫻嬭瘯銆備唬鐮佸寘錛?a href="/Files/huaxiazhihuo/preprocessor.rar" style="color: #3366ff;">/Files/huaxiazhihuo/preprocessor.rar</a></div><img src ="http://www.shnenglu.com/huaxiazhihuo/aggbug/215050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/huaxiazhihuo/" target="_blank">鍗庡涔嬬伀</a> 2017-07-04 14:21 <a href="http://www.shnenglu.com/huaxiazhihuo/archive/2017/07/04/215050.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>棰勫鐞嗙殑鍥劇伒瀹屽涔嬪紩璦http://www.shnenglu.com/huaxiazhihuo/archive/2017/01/14/214594.html鍗庡涔嬬伀鍗庡涔嬬伀Sat, 14 Jan 2017 07:01:00 GMThttp://www.shnenglu.com/huaxiazhihuo/archive/2017/01/14/214594.htmlhttp://www.shnenglu.com/huaxiazhihuo/comments/214594.htmlhttp://www.shnenglu.com/huaxiazhihuo/archive/2017/01/14/214594.html#Feedback0http://www.shnenglu.com/huaxiazhihuo/comments/commentRss/214594.htmlhttp://www.shnenglu.com/huaxiazhihuo/services/trackbacks/214594.html濂戒箙娌℃湁鍏夐【cppblog浜?jiǎn)锛岀幇鍦q欓噷榪欎箞鍐鋒竻浜?jiǎn)锛屼笉鍏嶈錆h鏈変簺浼ゆ劅錛屽彲瑙乧++鐜板湪澶氫箞鐨勪笉寰椾漢蹇?jī)锛屼篃鍙兘鏄痗++鐨勫ぇ紲炲幓浜?jiǎn)鍏朵粬鐨劸|戠粶騫沖彴錛屽ソ姣旂煡涔庛備笉綆℃庝箞鏍鳳紝濮嬬粓瀵筩++榪樻槸鏈変簺鎰熸儏錛屼篃瀵筩ppblog鏈変簺鎰熸儏銆?br />
鎴戜滑榪樻槸鏉ヨ璁篶++鍚э紝榪欏嚑騫村湪c++閲岄潰鐜╀唬鐮佽嚜鍔ㄧ敓鎴愭妧鏈紝鑰岄澶勭悊鏄笉鍙伩鍏嶏紝涔熸槸涓嶅彲鎴栫己鐨勯噸瑕佸伐鍏楓傝櫧鐒禸oost pp棰勫鐞嗗簱鍦ㄥ畯鐨勮繍鐢ㄤ笂寰堟槸瀹屽杽錛屼絾鏄唬鐮佷篃澶浜?jiǎn)锛岃屼笖浠g爜寰堜笉濂界悊瑙o紝瀵規(guī)錛屼笉鍏嶈浜虹枒鎯戯紝鏈夊繀瑕佹悶寰楅偅涔堝鏉傦紝鎼為偅涔堝浠g爜鍚楋紵騫朵笖錛岀湅浜?jiǎn)boostpp鐨勪嬌鐢ㄦ帴鍙e悗錛屾劅瑙夊啓寰楀緢涓嶅共鍑錛屼篃涓嶅ソ緇勫悎銆傚洜姝わ紝閲嶆柊鍋氫簡(jiǎn)涓濂楅澶勭悊鐨勮疆瀛愩備互涓嬬殑浠g爜錛屽亣璁懼湪msvc2013浠ヤ笂鐨勭増鏈繍琛岋紝鍙嶆寰堝浜虹敤MSVC鐨勶紝瑁呴肩殑鑷綋鍒錛岄犲嚭鏉ョ殑杞瓙錛屽懼悜浜庡厛鏀寔msvc銆?br />
棣栧厛錛屾垜浠畾涔変竴涓畯錛岀敤鏉ョ粰鎶婂叆鍙傚彉鎴愬瓧絎︿覆錛屽挦錛岃繖涓簨鎯呬篃澶猠asy浜?jiǎn)锛屼絾鏄Q屽湪姝わ紝鎰熻錛岃繕鏄湁蹇呰搴熻瘽澶氳В閲婁竴涓嬨備互涓嬩唬鐮佹儻渚嬮兘鏄紝鎵鏈夊彲鐢ㄧ殑瀹忓嚱鏁伴兘鏄互PP寮澶村叏閮ㄥぇ鍐欙紝鑰屼互_ZPP寮澶寸殑鍏ㄩ儴閮芥槸鍐呴儴瀹炵幇錛屽叾瀹炶繕鍙互鍋氬緱鏇撮毦鐪嬩竴鐐廣傚洜涓哄畯鍑芥暟鏄叏灞鐨勶紝娌℃湁浣滅敤鍩熺殑姒傚康錛屽茍涓斿彧鏄崟綰殑鏂囨湰鏇挎崲錛屾鐨勬椂鍊欙紝榪樹笉鐭ラ亾鎬庝箞姝伙紝鎵浠ワ紝蹇呴』璋ㄦ厧瀵瑰緟銆傚儚鏄痺indows.h澶存枃浠墮偅鏍鳳紝鐩存帴鐢╩in錛宮ax浣滀負(fù)瀹忕殑鍚嶅瓧錛岃櫧鐒剁敤璧鋒潵寰堟柟渚匡紝浣嗕篃涓嶇煡閬撳埗閫犱簡(jiǎn)澶氬皯楹葷儲(chǔ)錛屾墍浠ワ紝寰堝鏃跺欙紝鍖呭惈windows.h鏃訛紝絎竴浠朵簨鎯呭氨鏄痷ndef min鍜宮ax銆?br />
浠ヤ笅鐨勪唬鐮侊紝鍙互闅忎究鍦ㄦ煇涓伐紼嬩笅錛岄殢渚垮緩绔嬩竴涓猚pp鍚庣紑鍚嶇殑婧愭枃浠訛紝鐒跺悗鎸塁TRL+F7緙栬瘧錛屼笉闇瑕丗5錛屽氨鍙互鐪嬪埌榪愯鐨勬晥鏋滐紝濡傛灉緙栬瘧閫氳繃錛屽氨璇存槑瀹忓熀鏈笂姝g‘錛屾祴璇曚唬鐮佽秺澶氾紝鍑嗙‘鎬у氨瓚婇珮銆傚綋鐒?dòng)灱屼綘浠篃鍙互閫氳繃璁劇疆婧愭枃浠剁殑灞炴э紝璁﹎svc鐢熸垚棰勫鐞嗗悗鐨勬枃浠訛紝鐒跺悗鐢ㄨ浜嬫湰鎵撳紑閭d釜鏂囦歡瑙傜湅銆?br />
#define PP_TEXT(str) _ZPP_TEXT(str)
#define _ZPP_TEXT(str) #str
鍦╟++棰勫鐞嗗畯涓紝鎿嶄綔絎?鏄皢鍚庨潰璺熼殢鐨勮〃杈懼紡鍔犱笂涓や釜鍙屽紩鍙鳳紝涔熷氨鏄瓧絎︿覆銆侾P_TEXT(str)涓嶆槸鐩存帴瀹氫箟鎴?str錛岃屾槸閫氳繃璋冪敤_ZPP_TEXT(str)錛岀劧鍚庡湪閭i噷鎵嶅皢鍏ュ弬鍙樻垚瀛楃涓詫紝鏄懼緱鏈夌偣杈楄漿錛屾湁鐐瑰姝や竴涓撅紝浣嗭紝鍏跺疄鏄負(fù)浜?jiǎn)鏀寔瀹忕殑鍏ㄦ柟浣嶅睍寮錛屼篃灝辨槸鍏ュ弬str鏈韓涔熷瓨鍦ㄥ畯璋冪敤鐨勬椂鍊欙紝綰睘鏃犲銆傛瘮濡傦紝濡傛灉榪欐牱瀹炵幇
#define PP_TEXT(str) #str
閭d箞錛屽浜庝笅闈㈢殑鎯呭喌錛?br />
#define AAA aaa
PP_TEXT(AAA)錛岀粨鏋滃皢鏄?AAA",鑰屼笉鏄?aaa"銆傚洜涓哄畯鎿嶄綔絎︾洿鎺ユ槸灝嗗叆鍙傚彉鎴愬瓧絎︿覆錛屾病鏈夎鍏ュ弬鏈変竴鐐圭偣鍥炴棆鐨勭┖闂達(dá)紝鎵浠ュ彧濂藉紩鍏ラ棿鎺ュ眰錛岃鍏ュ弬鏈夋満浼?xì)瀹忓睍寮銆傚悗闈紝寰堝瀹忓嚱鏁伴兘鏄繖鏍峰疄鐜幫紝涓嶅緱涓嶉棿鎺ヨ皟鐢紝浠ヤ究璁╁畯鍏ㄩ潰灞曞紑銆傝宮svc鐨勫畯灞曞紑鏈哄埗鏇村姞濂囪懇錛屾洿鍔犱笉浜烘у寲錛屽叾闂存帴璋冪敤鐨勫艦寮忎篃鏇翠笐闄嬨傝繖閮芥槸娌″姙娉曠殑浜嬫儏銆?br />鐒跺悗錛屼負(fù)浜?jiǎn)璋冭瘯瀹忓Q屾垨鑰呮祴璇曞畯錛屽綋鐒?dòng)灱屽緢澶氭椂鍊欙紝璋冭瘯瀹忥紝榪樻槸瑕佹墦寮棰勫鐞嗙殑鏂囦歡鏉ュ姣斿垎鏋愩傛垜浠 static_assert浣滀竴鐐圭偣鍖呰錛屽洜涓簊tatic_assert闇瑕佷袱涓弬鏁幫紝c++11鍚庨潰鐨刢++鐗堟湰涓紝static_assert濂藉儚鍙渶瑕佷竴涓叆鍙傦紝閭f椂灝變笉闇瑕佽繖涓寘瑁呬簡(jiǎn)銆?br />
#define PP_ASSERT() static_assert((__VA_ARGS__), PP_TEXT(__VA_ARGS__));
PP_ASSERT(...)閲岄潰鐨勪笁涓偣錛屾槸涓嶅畾鍙傛暟鐨勫畯錛岃宊_VA_ARGS__灝變唬琛ㄤ簡(jiǎn)...鎵鍖歸厤鐨勬墍鏈夊弬鏁幫紝榪欐潯璇硶寰堥噸瑕侊紝瑕佺啛緇冦傝繖閲岋紝灝變笉璇︾粏瑙i噴鍏剁敤娉曚簡(jiǎn)錛屽悗闈細(xì)鏈夊ぇ鎶婂ぇ鎶婄殑瀹忓嚱鏁扮敤鍒癬_VA_ARGS__銆?br />濂戒簡(jiǎn)錛屾垜浠彲浠ュ紑濮嬬敤PP_ASSERT(...)鍋氭祴璇曚簡(jiǎn)銆?br />
PP_ASSERT(2+3==5)
濡傛灉錛岀劧鍚庣紪璇戣繖涓枃浠訛紝鍙戠幇緙栬瘧閫氳繃浜?jiǎn)锛屾瘮濡?br />
PP_ASSERT(2+3==4)
緙栬瘧鐨勬椂鍊欙紝灝變細(xì)鎶ラ敊璇俊鎭紝error C2338: 2+3==4
濂戒簡(jiǎn)錛屾祴璇曞噯澶囧緩绔嬭搗鏉ワ紝灝卞彲浠ュ紑濮嬭倖鏃犲繉鎯殑鍐欎唬鐮佷簡(jiǎn)銆備竴姝ヤ竴姝ュ湴鏋勫緩c棰勫鐞嗗畯鐨勫浘鐏靛畬澶囥?br />鏄劇劧錛屽綋鍔′箣鎬ワ紝鏈鏍規(guī)湰鐨勫畯灝辨槸灝嗕袱涓畯鍙傛暟鐨勫茍鎺ワ紝涔熷嵆鏄?#榪愮畻絎︼紝鏄劇劧濂芥瘮#榪愮畻閭f牱瀛愶紝蹇呴』緇欓噷闈㈠弬鏁版湁瀹忓睍寮鐨勬満浼?xì)锛屽洜姝よ闂存帴璋冪敤锛屼笅闈㈡槸鍏跺疄鐜?br />
#define PP_JOIN(_A, _B) _ZPP_JOIN_I(_A, _B)
#define _ZPP_JOIN_I(_A, _B) _ZPP_JOIN_II(~, _A##_B)
#define _ZPP_JOIN_II(p, res) res
绔熺劧涓嶆涓灞傞棿鎺ワ紝鑰屾槸涓ゅ眰錛屽張澶氭涓涓撅紝鏄洜涓哄彂鐜板湪鍋氬畯閫掑綊鐨勬椂鍊欙紝涓灞傞棿鎺ヨ皟鐢ㄨ繕涓嶈兘璁╁畯鍏呭垎鍦板睍寮錛屾墍浠ュ彧濂藉張鍔犻棿鎺ュ眰錛屼篃涓嶆槑鐧芥槸浣曞師鍥狅紝涔熸噿寰楄拷絀朵簡(jiǎn)銆傜幇鍦紝鎺ヤ笅鏉ワ紝褰撶劧鏄祴璇昉P_JOIN浜?jiǎn)銆傚悇浣嶅悓瀛︼紝鍙互鏂板緩绔嬩竴涓祴璇曟枃浠訛紝閭d釜鏂囦歡include鎴戜滑鐨勮繖涓畯鍑芥暟銆傚綋鐒?dòng)灱屼篃鍙互鍦ㄥ悓涓涓枃浠墮噷闈㈠啓嫻嬭瘯浠g爜錛屾敞鎰忓垎鎴愪袱孌典唬鐮侊紝涓婁竴孌靛啓瀹忓嚱鏁幫紝涓嬩竴孌靛啓嫻嬭瘯浠g爜錛岀洰鍓嶆潵鐪嬶紝閮藉彲浠ョ殑錛屽悗闈㈠啀鏁寸悊銆?br />
PP_ASSERT(PP_JOIN(1+2== 3))
#define A 20
#define B 10
PP_ASSERT(PP_JOIN(A 
+ B, == 30))
鏈変簡(jiǎn)PP_JOIN錛屽氨鍙互寮濮嬪仛鐐瑰叾浠栦簨鎯呬簡(jiǎn)銆傛瘮濡傦紝璁℃暟鍣紝
#define _ZPP_INC_JOIN(_A, _B) _ZPP_INC_JOIN_IMP1(_A, _B)
#define _ZPP_INC_JOIN_IMP1(_A, _B) _ZPP_INC_JOIN_IMP2(~, _A##_B)
#define _ZPP_INC_JOIN_IMP2(p, res) res

#define PP_INC(x, ) _ZPP_INC_JOIN(_ZPP_INC_, x)
#define _ZPP_INC_0         1
#define _ZPP_INC_1         2
#define _ZPP_INC_2         3
#define _ZPP_INC_3         4
#define _ZPP_INC_4         5
#define _ZPP_INC_5         6
#define _ZPP_INC_6         7
#define _ZPP_INC_7         8
#define _ZPP_INC_8         9
#define _ZPP_INC_9         10
榪欓噷錛屾垜浠噸鏂板張瀹炵幇浜?jiǎn)涓閬峆P_JOIN錛岃繖涔熸槸娌″姙娉曠殑浜嬫儏錛屽悗闈㈠湪閲嶉噸宓屽鐨勬椂鍊欙紝浼?xì)鍑虹幇PP_JOIN閲岄潰鍙堝寘鍚玃P_JOIN鐨勬儏鍐碉紝榪欐牱浼?xì)瀵艰嚧瀹忓仠姝㈠睍寮浜?jiǎn)锛屾墍浠ワ紝鍙ソ瀵逛簬姣忎竴涓鐢ㄥ埌JOIN涔嬪錛岄兘鐢ㄨ嚜宸辯増鏈殑JOIN銆?br />榪欐槸瀹忓嚱鏁扮殑瀹炵幇鏂瑰紡錛岄氳繃騫舵帴錛屾枃鏈浛鎹紝涓涓鏋氫婦錛屾墠杈懼埌榪欐牱鐨勬晥鏋滐紝涔熷氨鏄錛屾垜浠氳繃JOIN鍑芥暟錛屽湪瀹忛噷闈㈡瀯閫犱簡(jiǎn)涓涓鏁板櫒鐨勬暟鎹被鍨嬨傚鏋滄瘡涓畯鍑芥暟閮借繖鏍峰啓錛屽矀涓嶆槸寰堢瘡銆傚ソ娑堟伅鏄紝鍙渶鐢ㄨ繖縐嶈嫤閫兼柟寮忓疄鐜板嚑涓渶鍩烘湰鐨勫嚱鏁幫紝鐒跺悗閫氳繃瀹忕殑閫掑綊寮曟搸錛屽叾浠栫殑瀹忓嚱鏁板氨涓嶉渶榪欐牱瀛愪竴涓竴涓嫤閫肩殑騫舵帴鏇挎崲浜?jiǎn)銆?br />
PP_ASSERT(PP_INC(9)==10)
PP_ASSERT(PP_INC(PP_INC(
9)) == 11)
鍐欐祴璇曚唬鐮佷範(fàn)鎯簡(jiǎn)錛屽啓璧鋒潵灝卞緢鏈夋剰鎬濅簡(jiǎn)錛屾祴璇曢氳繃錛屼篃鏄渶嬋鍔ㄤ漢蹇?jī)鐨勬椂鍒汇?br />鎺ヤ笅鏉ワ紝瑕佸鐞唌svc閲岄潰瀹忕殑鎭跺績(jī)琛屼負(fù)錛岀劧鍚庡氨緇撴潫鏈紩璦銆?br />
#define PAIR_SECOND(x, y) y
PP_ASSERT(PAIR_SECOND(
1020== 20)
榪欐牱瀛愶紝榪樹笉閿欙紝涓嬮潰錛屽啀define涓涓畯鍑芥暟錛岃鍏惰繑鍥炰竴涓猵air錛屼篃灝辨槸涓や釜鍊?br />
#define MAKE_PAIR(x, y) x, y
鐒跺悗錛岃繖鏍瘋皟鐢紝
PAIR_SECOND(MAKE_PAIR(1020))
緙栬瘧鍣ㄩ┈涓婂氨涓嶉珮鍏翠簡(jiǎn)錛寃arning C4003: “PAIR_SECOND”瀹忕殑瀹炲弬涓嶈凍
濂藉儚鏄紪璇戝櫒娌℃湁鍏堝睍寮MAKE_PAIR(10, 20)錛岀劧鍚庡啀璋冪敤PAIR_SECOND錛岃屾槸鐩存帴鎶奙AKE_PAIR(10, 20)鏁翠釜褰撴垚涓涓嚱鏁頒紶緇橮AIR_SECOND錛岀劧鍚庯紝PAIR_SECOND灝辨彁紺哄疄鍙備笉瓚籌紝鐒跺悗錛岀‖瑕佹祴璇曪紝
PP_ASSERT(PAIR_SECOND(MAKE_PAIR(1020)) == 20)
鏄劇劧錛屾棤璁哄浣曪紝緙栬瘧鍣ㄥ娍蹇呭氨榫欓澶ф掍簡(jiǎn)銆傚姝わ紝鎴戜滑鍙ソ鍐嶅紩鍏ラ棿鎺ュ眰錛屾兂鍔炴硶璁㎝AKE_PAIR(10, 20)鍏堝睍寮錛岀劧鍚庡啀浼犵粰PAIR_SECOND銆傝繖鏍鳳紝灝變笉鑳界洿鎺ョ敤榪欐牱鐨勫艦寮忎簡(jiǎn)錛孭AIR_SECOND(MAKE_PAIR(10, 20)) 銆傚彧濂芥敼鎴愯繖鏍鳳紝涓嬮潰鐨勫嚑琛屼唬鐮侊紝寰堟湁鐐規(guī)儕澶╁湴娉i紲炵殑鍛抽亾銆?br />
#define _ZPP_INVOKE_JOIN(_A, _B) _ZPP_IMP_INVOKE_JOIN_I(_A, _B)
#define _ZPP_IMP_INVOKE_JOIN_I(_A, _B) _ZPP_IMP_INVOKE_JOIN_II(~, _A##_B)
#define _ZPP_IMP_INVOKE_JOIN_II(p, res) res

#define PP_INVOKE(m, args, ) _ZPP_INVOKE_JOIN(m, args)
鍓嶉潰鍑犺浠g爜閮芥槸PP_INVOKE鐨凧OIN鍑芥暟瀹炵幇錛屽彲浠ョ洿鎺ュ綋瀹冧滑鏄疛OIN鍑芥暟錛屽叧閿槸PP_INVOKE(m, args, ...)榪欓噷錛岀涓涓弬鏁癿鏄畯鍑芥暟錛岀浜屼釜鏄痑rgs錛屾槸瑕佷紶緇欑涓涓弬鏁癿鐨勫弬鏁板垪琛紝鐢ㄦ嫭鍙鋒嫭璧鋒潵錛岃嚦浜庡悗闈㈢殑鐪佺暐鍙鳳紝鏄湁浜涙椂鍊欎負(fù)浜?jiǎn)鍙栨?zhèn)︾紪璇戝櫒鑰屾坊鍔犵殑錛屼篃涓嶇煡閬撴槸浠涔堝師鍥狅紝鍙嶆榪欐牱瀛愬氨鍙互浜?jiǎn)锛屾噿寰棙q界┒銆傚瀮鍦懼畯錛屽瀮鍦鵑澶勭悊錛屽彧瑕佽兘瀹屾垚鍔熻兘灝辮浜?jiǎn)锛宑++涓紝浠g爜鐢熸垚浠g爜錛岄噸澶存垙鍦╰mp閭i噷錛屽畯鍙槸灝忓皬蹇呰鐨勮緟鍔╁伐鍏瘋(gè)屽凡銆傜劧鍚庯紝榪欐牱璋冪敤錛?br />PP_ASSERT(PP_INVOKE(PAIR_SECOND, (MAKE_PAIR(10, 20))) == 20)
緙栬瘧閫氳繃浜?jiǎn)锛屽ソ涓嶅?guī)槗鍟婏紒

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人免费在线| 久久精品国产77777蜜臀| 久久综合五月| 久久久最新网址| 亚洲精品韩国| 中文日韩电影网站| 韩国精品一区二区三区| 久久综合九色欧美综合狠狠| 久久蜜桃精品| 99re这里只有精品6| 中文在线资源观看视频网站免费不卡| 欧美日韩中文| 久久精品一区二区三区四区| 久久久久久久999| 在线一区二区三区四区五区| 亚洲性线免费观看视频成熟| 精品二区视频| 99国产精品99久久久久久| 国产精品久久久久久久久动漫| 欧美一区二区精品久久911| 久久激情五月丁香伊人| 日韩亚洲欧美高清| 亚洲欧美另类国产| 最新国产拍偷乱拍精品| 中文在线不卡| 亚洲三级影院| 欧美在线观看www| 99综合电影在线视频| 欧美一级淫片aaaaaaa视频| 亚洲麻豆国产自偷在线| 午夜精品一区二区三区在线播放| 亚洲国产精品视频| 性做久久久久久| 亚洲网站在线看| 免费的成人av| 久久精品在线| 国产精品久久99| 亚洲黄色大片| 国产综合久久久久久| 亚洲无线一线二线三线区别av| 亚洲成人在线观看视频| 午夜精品福利一区二区三区av| 亚洲乱码国产乱码精品精天堂| 欧美在线观看视频在线| 亚洲天堂网在线观看| 免费看黄裸体一级大秀欧美| 午夜久久久久| 在线观看日韩av电影| 亚洲精品国产拍免费91在线| 精品成人一区二区三区四区| 亚洲综合色在线| 9l国产精品久久久久麻豆| 狂野欧美一区| 久久琪琪电影院| 久久九九精品99国产精品| 欧美高清视频一区二区三区在线观看 | 亚洲日本欧美天堂| 国内久久婷婷综合| 亚洲女ⅴideoshd黑人| 在线看国产日韩| 久久久夜夜夜| 欧美成人综合网站| 亚洲人成在线播放网站岛国| 久久字幕精品一区| 亚洲电影观看| 日韩亚洲欧美成人| 欧美另类综合| 在线亚洲自拍| 久久aⅴ乱码一区二区三区| 国产精品日韩一区二区三区| 亚洲欧美国产高清| 久久精品伊人| 亚洲欧洲精品一区二区精品久久久| 久久爱www久久做| 久久人人爽人人| 亚洲第一区在线| 欧美国产日产韩国视频| 亚洲精品影视| 亚洲一区影院| 国产综合视频| 欧美激情亚洲| 亚洲调教视频在线观看| 久久成人精品| 亚洲精品1区2区| 欧美日韩在线观看视频| 亚洲自拍电影| 欧美高清视频一区二区三区在线观看| 亚洲精品少妇网址| 国产精品www网站| 欧美在线观看一区| 亚洲国产一区二区视频| 亚洲欧美日韩成人| 尤物在线观看一区| 国产精品高清一区二区三区| 欧美一区二区视频观看视频| 亚洲高清一区二区三区| 亚洲欧美综合另类中字| 亚洲国产精品成人精品| 国产精品户外野外| 老司机精品视频一区二区三区| 亚洲精品一区二区在线观看| 欧美影片第一页| 日韩一区二区福利| 精品9999| 国产精品毛片va一区二区三区 | 亚洲人永久免费| 久久本道综合色狠狠五月| 91久久线看在观草草青青| 国产欧美日韩一区二区三区在线观看 | 国产精品xxx在线观看www| 亚洲自拍都市欧美小说| 久久婷婷麻豆| 亚洲午夜视频| 亚洲黄一区二区三区| 国产精品视区| 欧美日韩伦理在线免费| 久久久久综合| 午夜一级在线看亚洲| 99pao成人国产永久免费视频| 久久最新视频| 久久久久国产精品一区| 午夜老司机精品| 在线一区视频| 99av国产精品欲麻豆| 在线观看久久av| 狠狠色伊人亚洲综合成人| 国产伦理一区| 国产精品久久午夜夜伦鲁鲁| 欧美精品福利在线| 男男成人高潮片免费网站| 久久久九九九九| 久久国产精品一区二区| 亚洲欧美日韩国产另类专区| 亚洲视频在线观看视频| 99精品视频免费观看视频| 91久久精品国产| 亚洲国产精品va在线看黑人| 欧美成人影音| 欧美黄色免费| 亚洲欧洲精品一区二区三区| 亚洲激情视频在线观看| 亚洲国产老妈| 亚洲三级视频| 一区二区三区成人精品| 亚洲无线视频| 欧美一区二区三区另类| 欧美一区二区成人| 久久久久**毛片大全| 猛干欧美女孩| 欧美日韩一区二区三区免费| 欧美日韩国产一区二区三区| 欧美三级午夜理伦三级中文幕| 国产精品yjizz| 国产日韩精品一区观看| 黄色一区二区三区| 亚洲经典一区| 一区二区三区高清| 欧美一区二区三区的| 久久影视三级福利片| 亚洲大片免费看| 一本不卡影院| 久久国产精品久久w女人spa| 麻豆精品传媒视频| 欧美日韩在线一区二区三区| 国产老女人精品毛片久久| 韩国成人福利片在线播放| 亚洲人成精品久久久久| 亚洲欧美日韩成人高清在线一区| 欧美在线视频播放| 亚洲二区视频在线| 亚洲尤物精选| 老司机一区二区| 国产精品看片你懂得| 亚洲国产99精品国自产| 亚洲专区欧美专区| 农村妇女精品| 亚洲一区二区高清| 免费中文日韩| 国产亚洲第一区| 亚洲另类在线视频| 久久尤物电影视频在线观看| 亚洲精品久久久蜜桃| 欧美中文字幕在线| 欧美日韩午夜激情| 影音先锋中文字幕一区| 亚洲欧美日韩国产中文| 欧美激情视频给我| 先锋影院在线亚洲| 国产精品mv在线观看| 亚洲欧洲一区二区三区久久| 久久精品国产久精国产爱| 亚洲伦伦在线| 中文精品视频| 一区二区不卡在线视频 午夜欧美不卡在| 午夜精品免费视频| 欧美三级视频| 在线视频免费在线观看一区二区| 久久综合给合久久狠狠色| 亚洲特级片在线| 欧美日本中文字幕|