锘??xml version="1.0" encoding="utf-8" standalone="yes"?>青青草国产97免久久费观看,国产精品99久久久精品无码,国产精品成人无码久久久久久http://www.shnenglu.com/jack-wang/category/10927.html灝忕帇zh-cnSun, 27 Jun 2021 02:49:35 GMTSun, 27 Jun 2021 02:49:35 GMT60boost緙栬瘧錛圵indows騫沖彴錛?/title><link>http://www.shnenglu.com/jack-wang/archive/2021/06/26/217724.html</link><dc:creator>灝忕帇</dc:creator><author>灝忕帇</author><pubDate>Fri, 25 Jun 2021 23:45:00 GMT</pubDate><guid>http://www.shnenglu.com/jack-wang/archive/2021/06/26/217724.html</guid><wfw:comment>http://www.shnenglu.com/jack-wang/comments/217724.html</wfw:comment><comments>http://www.shnenglu.com/jack-wang/archive/2021/06/26/217724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/jack-wang/comments/commentRss/217724.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/jack-wang/services/trackbacks/217724.html</trackback:ping><description><![CDATA[1銆佷笅杞芥渶鏂扮増鏈紝褰撳墠鏈鏂扮増鏈負1.76錛屼笅杞藉悗瑙e帇<br />2銆佽繘鍏ユ牴鐩綍錛岃繍琛屼笅闈㈢殑bootstrap.bat錛岀敓鎴恇2.exe錛堜互鍓嶇殑<span style="color: #333333; font-family: "PingFang SC", "Lantinghei SC", "Microsoft YaHei", arial, 瀹嬩綋, sans-serif, tahoma; font-size: 16px; background-color: #ffffff;">bjam.exe宸茬粡琚窐姹頒簡</span>錛?br />3銆佹墦寮VS宸ュ叿x86 Native Tools Command Prompt錛岃繘鍏oost瑙e帇鏂囦歡澶規牴鐩綍錛屾墽琛屽懡浠わ細<div><span style="font-size: 16px;">b2 install --toolset=msvc-14.2 --build-type=complete --prefix=“E:\Packet\boost_1_72_0\compile” link=shared runtime-link=shared runtime-link=static threading=multi debug release</span></div><div><br />婕暱鐨勭瓑寰咃紝闀塊暱鐨勭珯鍙?/div><span style="background-color: #ffffff;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun"><span style="font-size: 16px;">O浜嗭紒</span></font></span><img src ="http://www.shnenglu.com/jack-wang/aggbug/217724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/jack-wang/" target="_blank">灝忕帇</a> 2021-06-26 07:45 <a href="http://www.shnenglu.com/jack-wang/archive/2021/06/26/217724.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>緙栬瘧boost1.54http://www.shnenglu.com/jack-wang/archive/2013/08/20/202675.html灝忕帇灝忕帇Tue, 20 Aug 2013 08:12:00 GMThttp://www.shnenglu.com/jack-wang/archive/2013/08/20/202675.htmlhttp://www.shnenglu.com/jack-wang/comments/202675.htmlhttp://www.shnenglu.com/jack-wang/archive/2013/08/20/202675.html#Feedback0http://www.shnenglu.com/jack-wang/comments/commentRss/202675.htmlhttp://www.shnenglu.com/jack-wang/services/trackbacks/202675.html鎴戞妸瀹冭В鍘嬪埌榪欓噷D:\boost_1_54_0銆?br /> 浠庢帶鍒跺彴榪涘叆D:\boost_1_54_0鐩綍涓紝杈撳叆鍛戒護bootstrap 鎵ц鍚庡惎鍔ㄧ紪璇戠▼搴忥紝寮濮嬪噯澶囩紪璇戠幆澧冿紝紼嶇瓑鐗囧埢錛?br />鎻愮ず鍐嶆杈撳叆緙栬瘧鍙傛暟錛屾垜杈撳叆 .\b2   錛堢敓鎴恦s2010宸ョ▼鏂囦歡錛?
鎵ц鍚庡紑濮嬬紪璇戞簮鏂囦歡
絳夊緟錛岋紝錛?br />絳夊緟錛岋紝錛?


琛ュ厖錛?
浣跨敤VS2013宸ュ叿闆嗙紪璇戯紝鍛戒護濡備笅:
.\b2 --toolset=msvc-12.0

灝忕帇 2013-08-20 16:12 鍙戣〃璇勮
]]>
妯℃澘鍏冪紪紼?--- 鐢?MPL 瑙e喅瀹為檯闂http://www.shnenglu.com/jack-wang/archive/2010/10/04/128589.html灝忕帇灝忕帇Mon, 04 Oct 2010 10:40:00 GMThttp://www.shnenglu.com/jack-wang/archive/2010/10/04/128589.htmlhttp://www.shnenglu.com/jack-wang/comments/128589.htmlhttp://www.shnenglu.com/jack-wang/archive/2010/10/04/128589.html#Feedback0http://www.shnenglu.com/jack-wang/comments/commentRss/128589.htmlhttp://www.shnenglu.com/jack-wang/services/trackbacks/128589.html杞細http://blog.csdn.net/ralph623/archive/2005/10/15/504369.aspx

鍦?STL 涓湁鍚勭瀹瑰櫒錛岃?STL 綆楁硶鍏佽鎴戜滑瀵瑰鍣ㄤ腑鐨勫厓绱犲仛鍚勭鎿嶄綔錛屼笅闈㈢殑紼嬪簭瀵逛簬姣忎竴涓綋浠g殑 C++ 紼嬪簭鍛橀兘搴旇鏄交鑰屾槗涓劇殑錛?/p>

#include <iostream>
#include <list>
#include <algorithm>
#include <string>

using namespace std;

struct print
{
    void operator()(const string& _str)
    {
        cout << _str << endl;
    }
};

int main()
{
    list<string> str_list;
    str_list.push_front("hello");
    str_list.push_front("world");
   
    list<string> another_list;
    another_list.push_back("hello");
    another_list.push_back("world");
   
    for_each(str_list.begin(), str_list.end(), print());
    for_each(another_list.begin(), another_list.end(), print());
}

榪愯緇撴灉錛?/p>

world
hello
hello
world

綆鍗曠殑涓滆タ寰寰鑳借鏄庢繁鍒葷殑閬撶悊錛屽湪榪欎釜紼嬪簭閲岋紝鎴戜滑閬囧埌鐨勬湰璐ㄩ棶棰樻槸浠涔堬紵棣栧厛錛屾垜浠湁涓涓鍣紱鍏舵錛屾垜浠彲浠ュ線瀹瑰櫒閲岄潰鏀句笢瑗匡紝鏈鍚庯紝鎴戜滑鍙互閫氳繃綆楁硶鎶婁竴涓搷浣滄柦鍔犱簬榪欎釜瀹瑰櫒涓殑姣忎竴涓紙涔熷彲浠ユ槸閮ㄥ垎錛夊厓绱犱腑銆傝繖灝辨槸涓婇潰紼嬪簭涓嚌緇撶殑鏈川闂銆?/p>

MPL 鍙互鐪嬫垚鏄?STL 鐨勭紪璇戞湡鐗堟湰錛屾垨鑰呰鍏冪紪紼嬬増鏈傚畠鍚屾牱涔熸彁渚涗簡鍚勭瀹瑰櫒錛屽彧涓嶈繃瀹圭撼鐨勫璞′笉鏄暟鎹紝鑰屾槸綾誨瀷銆傚畠浠殑鏋勯犳柟寮忚娉曚笂姣旇緝綾諱技錛屾垨鑰呯敋鑷籌紝鎴戜互涓猴紝鏇存湁瓚d竴鐐癸細

#include <string>
#include <iostream>
#include <boost/mpl/at.hpp>
#include <boost/mpl/list.hpp>
#include <boost/mpl/push_front.hpp>

using namespace boost;

int main()
{
    typedef mpl::list<> type_list1;
    typedef mpl::push_front<type_list1, int>::type type_list2;
    typedef mpl::push_front<type_list2, std::string>::type type_list;
   
    // 鎴栬呰繖鏍鋒洿濂?br>    typedef mpl::list<int, std::string> another_list;
   
    std::cout << typeid(mpl::at_c<type_list, 0>::type).name() << std::endl;
    std::cout << typeid(mpl::at_c<type_list, 1>::type).name() << std::endl;
   
    std::cout << typeid(mpl::at_c<another_list, 0>::type).name() << std::endl;
    std::cout << typeid(mpl::at_c<another_list, 1>::type).name() << std::endl;
}

紼嶅井瑙i噴涓涓嬨俶pl::list 灝辨槸 std::list 鐨勫厓緙栫▼鐗堟湰錛岃?mpl::push_front 鏄粈涔堝氨涓嶇敤鎴戣浜嗐俶pl::at_c 鏄竴涓厓緙栫▼綆楁硶錛屼綔鐢ㄧ浉褰撲簬榪愯鏈熺殑 [ ] 榪愮畻絎︼紝涔熷氨鏄緱鍒頒竴涓鍣ㄤ腑鍦ㄦ煇涓綅緗笂鐨勫厓绱犮傚湪 VC7.1 涓嬮潰錛屾墽琛岀粨鏋滄槸

class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
int
int
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >

榪欒窡榪愯鏈熺殑 list 鐨勮涓哄嚑涔庡畬鍏ㄤ竴鑷淬?/p>

褰撶劧錛宮pl 涔熸湁 for_each 錛岃屼笖鎴戜滑涔熷彲浠ヤ負 for_each 鎻愪緵涓涓厓緙栫▼ functor 銆備粈涔堟槸鍏冪紪紼?functor 錛熻繍琛屾椂鐨?functor 鏄竴涓彁渚涗簡 operator() 閲嶈澆鐨?struct 錛岃屽厓緙栫▼ functor 灝辨槸涓涓彁渚涗簡 operator() 妯℃澘鐨?struct 錛?/p>

#include <string>
#include <iostream>
#include <boost/mpl/at.hpp>
#include <boost/mpl/list.hpp>
#include <boost/mpl/push_front.hpp>
#include <boost/mpl/for_each.hpp>

using namespace boost;

struct print
{
    template <class T>
    void operator()(const T&)
    {
        std::cout << typeid(T).name() << std::endl;
    }
};

int main()
{
    typedef mpl::list<> type_list1;
    typedef mpl::push_front<type_list1, int>::type type_list2;
    typedef mpl::push_front<type_list2, std::string>::type type_list;
   
    typedef mpl::list<int, std::string> another_list;
   
    mpl::for_each<type_list>(print());
    mpl::for_each<another_list>(print());
}

杈撳嚭涓庝笂闈嬌鐢?mpl::at_c 鐨勭▼搴忓畬鍏ㄧ浉鍚屻?/p>

褰撶劧錛屽埌鐜板湪涓烘錛岃繖浜涚▼搴忛兘榪樻槸鍙仠鐣欏湪綰補鐨勭帺鍏風▼搴忎笂錛岃兘涓嶈兘鍋氱偣紼嶅井鏈夌敤鐨勪簨鎯呭憿錛熷綋鐒跺彲浠ャ傚亣瀹氭垜浠湁榪欐牱涓涓戶鎵夸綋緋伙細鏍規槸涓涓娊璞$被 Product 錛屽畠鏈変竴浜涙淳鐢熺被錛屼緥濡?PC 錛?Printer 絳夌瓑錛屽畠浠殑鍏叡鏂規硶 SerialNo 浼氳繑鍥炶嚜宸辯殑浜у搧搴忓垪鍙鳳紝鑰岃繖涓簭鍒楀彿鏄湪鏋勯犵殑鏃跺欏喅瀹氱殑錛?/p>

class Product
{
public:
    virtual std::string SerialNo()const = 0;
};

class PC : public Product
{
public:
    PC(const std::string& _sn)
        : sn_(_sn)
    {}

    std::string SerialNo()const
    {
        return sn_;
    }
private:
    std::string sn_;
};

class Printer : public Product
{
public:
    Printer(const std::string& _sn)
        : sn_(_sn)
    {}
   
    std::string SerialNo()const
    {
        return sn_;
    }
private:
    std::string sn_;
};

鐢?mpl::list 鎶婅繖浜涚被鍨嬫斁鍦ㄥ悓涓涓?list 閲岄潰褰撶劧涓嶅湪璇濅笅錛屼絾鏄垜浠笇鏈涙湁涓涓被浼?factory 妯″紡鐨勫疄鐜幫紝璁╂垜浠彲浠ヨ嚜鐢卞垱寤哄畠浠備笅闈㈢殑紼嬪簭鐢?mpl::for_each 涓?list 涓殑姣忎竴涓被鍨嬪垱寤轟竴涓疄渚嬶紝瀹冨綋鐒跺彲浠ヨ鎵╁睍鏉ュ仛浜涘緢鏈夌敤鐨勪簨鎯呫?/p>

#include <string>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <list>
#include <boost/shared_ptr.hpp>
#include <boost/mpl/at.hpp>
#include <boost/mpl/list.hpp>
#include <boost/mpl/for_each.hpp>

using namespace boost;

class Product
{
public:
    virtual std::string SerialNo()const = 0;
};

class PC : public Product
{
public:
    PC(const std::string& _sn)
        : sn_(_sn)
    {}

    std::string SerialNo()const
    {
        return sn_;
    }
private:
    std::string sn_;
};

class Printer : public Product
{
public:
    Printer(const std::string& _sn)
        : sn_(_sn)
    {}
   
    std::string SerialNo()const
    {
        return sn_;
    }
private:
    std::string sn_;
};

struct print
{
    template <class T>
    void operator()(const T& product)
    {
        std::cout << "Type: " << typeid(T).name()
                  << " SerialNo: " << product.SerialNo() << std::endl;
    }
};

// 鐢變簬 PC 鍜?Print 閮芥病鏈夐粯璁ょ殑 constructor 錛屽繀欏誨姞涓婅繖涓?br>template <class T>
struct wrap {};

struct Create
{
    Create(const std::string& _line)
        : line_(_line)
        , serial_(0)
    {}
   
    template <class T>
    void operator()(wrap<T>)
    {
        std::stringstream ss;
        ss << line_ << '_' << serial_++;
        shared_ptr<T> product(new T(ss.str()));
       
        print()(*product);
    }
   
    std::string line_;
    unsigned long serial_;
};

int main()
{  
    typedef mpl::list<Printer, PC> product_list;
   
    mpl::for_each<product_list, wrap<mpl::_1> >(Create("line1"));
}

杈撳嚭錛?/p>

Type: class Printer SerialNo: line1_0
Type: class PC SerialNo: line1_1


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/ralph623/archive/2005/10/15/504369.aspx



灝忕帇 2010-10-04 18:40 鍙戣〃璇勮
]]>
Boost鐨勭姸鎬佹満搴撴暀紼?琛ュ厖 http://www.shnenglu.com/jack-wang/archive/2010/10/03/128502.html灝忕帇灝忕帇Sun, 03 Oct 2010 11:10:00 GMThttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128502.htmlhttp://www.shnenglu.com/jack-wang/comments/128502.htmlhttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128502.html#Feedback0http://www.shnenglu.com/jack-wang/comments/commentRss/128502.htmlhttp://www.shnenglu.com/jack-wang/services/trackbacks/128502.html杞細http://www.shnenglu.com/shaker/archive/2010/08/16/123601.html

鏉ヨ嚜:http://www.shnenglu.com/shanoa/archive/2009/05/30/86143.html
鎺ヨЕ浜哹oost鐨勭姸鎬佹満錛屽彂鐜頒笉鏄兂璞′腑鐨勯偅涔堝ソ鐢紝鍦ㄤ竴浜涘湴鏂硅繕寰楃敤涓妋pl搴撻噷鐨勪笢瑗匡紝鐢變簬瀵規ā鏉垮厓緙栫▼涓嶆槸寰堢啛緇冿紝鎼炰簡濂戒簺澶╂墠綆楀紕鏄庣櫧榪欒姝葷殑mpl::list鐨勫師鐞嗗拰鐢ㄦ硶銆?br>boost鐨勭姸鎬佹満鏄睘浜庨潤鎬侀摼鎺ョ殑鐘舵佹満錛屼篃灝辨槸璇達紝瀹冪殑鍥劇粨鏋勬槸緙栬瘧鏈熼棿灝辯‘瀹氫簡鐨勶紝鍦ㄨ繍琛屾椂涓嶅彲浠ュ姩鎬侀厤緗傛墍浠ワ紝瀹冪殑鐢ㄩ旀槸鏈変竴瀹氬眬闄愭х殑錛屼絾鍦ㄤ竴鑸儏鍐典笅錛屽畠涓嶄粎寰堥氱敤錛岃屼笖鍦ㄤ綘浼氱敤騫剁啛緇冨湴鎯呭喌涓嬶紝榪樹細寰堝ソ鐢紝鐢ㄨ搗鏉ュ緢鑸掓湇錛岄昏緫涔熷緢鍚堢悊銆備笅闈㈠氨鏄竴孌典唬鐮侊紝褰撶劧涔熸槸鍊熼壌浜嗗埆浜虹殑涓滆タ錛岃嚜宸變慨鏀逛簡涓涓嬶紝鍦∕ainState涓坊鍔犱簡涓涓猅ransition鍋氫簡嫻嬭瘯錛屽洜涓烘鍓嶆垜榪樹笉鐭ラ亾涓涓姸鎬佸浣曞寘鍚涓猅ransition錛屽懙鍛碉紝鍘熸潵鏄敤mpl::list鏉ュ仛銆傝嚦浜庤繖涓姸鎬佹満鐨勫叆闂ㄦ暀紼嬶紝緗戜笂闅忓鍙鐨勪笁閮ㄦ洸錛氥奲oost 鐘舵佹満鍏ラ棬鏁欑▼銆嬭寰楀緢娓呮銆?br>

  1 #include <iostream>
  2 #include <ctime>
  3 
  4 #include <boost/statechart/transition.hpp>
  5 #include <boost/statechart/event.hpp>
  6 #include <boost/statechart/state_machine.hpp>
  7 #include <boost/statechart/simple_state.hpp>
  8 
  9 namespace sc = boost::statechart;
 10 
 11 
 12 
 13 class EvtStartStop : public sc::event<EvtStartStop>{};
 14 class EvtReset : public sc::event<EvtReset>{};
 15 class EvtGo : public sc::event<EvtGo>{};
 16 
 17 
 18 class MainState;
 19 class StopState;
 20 class RunState;
 21 class TwoState;
 22 
 23 class Machine : public sc::state_machine<Machine, MainState>
 24 {};
 25 
 26 
 27 
 28 
 29 
 30 
 31 class MainState : public sc::simple_state<MainState, Machine, StopState>
 32 {
 33 public:
 34     typedef sc::transition<EvtReset, MainState> reactReset;
 35     typedef sc::transition<EvtGo, TwoState> reactGo;
 36     typedef boost::mpl::list<reactReset, reactGo> reactions;
 37 
 38     MainState(void){
 39         std::cout<<"榪涘叆MainState"<<std::endl;
 40         mTime = 0;
 41     }
 42 
 43     ~MainState(void){
 44         std::cout<<"閫鍑篗ainState"<<std::endl;
 45     }
 46 
 47     double mTime;
 48 };
 49 
 50 
 51 // 璇ョ姸鎬佸睘浜庢棤鐢ㄧ姸鎬侊紝鐢ㄤ簬嫻嬭瘯mpl::list鐨勫transition鐢ㄦ硶
 52 class TwoState : public sc::simple_state<TwoState, Machine>
 53 {
 54 public:
 55     typedef sc::transition<EvtGo, MainState> reactions;
 56 
 57     TwoState(void){
 58         std::cout<<"榪涘叆TwoState"<<std::endl;
 59     }
 60 
 61     ~TwoState(void){
 62         std::cout<<"閫鍑篢woState"<<std::endl;
 63     }
 64 };
 65 
 66 
 67 class StopState : public sc::simple_state<StopState, MainState>
 68 {
 69 public:
 70     typedef sc::transition<EvtStartStop, RunState> reactions;
 71     StopState(void){
 72         std::cout<<"榪涘叆StopState"<<std::endl;
 73     }
 74 
 75     ~StopState(void){
 76         std::cout<<"閫鍑篠topState"<<std::endl;
 77     }
 78 };
 79 
 80 class RunState : public sc::simple_state<RunState, MainState>
 81 {
 82 public:
 83     typedef sc::transition<EvtStartStop, StopState> reactions;
 84     RunState(void){
 85         std::cout<<"榪涘叆RunState"<<std::endl;
 86         mStartTime = 0;
 87     }
 88 
 89     ~RunState(void){
 90         std::cout<<"閫鍑篟unState"<<std::endl;
 91         context<MainState>().mTime += std::difftime(std::time(0), mStartTime);
 92     }
 93 
 94     std::time_t mStartTime;
 95 };
 96 
 97 
 98 int _tmain(int argc, _TCHAR* argv[])
 99 {
100     Machine mc;
101     mc.initiate();
102 
103     mc.process_event(EvtStartStop());
104     mc.process_event(EvtStartStop());
105     mc.process_event(EvtReset());
106     mc.process_event(EvtGo());
107     mc.process_event(EvtGo());
108 
109     return 0;
110 }


灝忕帇 2010-10-03 19:10 鍙戣〃璇勮
]]>
Boost鐨勭姸鎬佹満搴撴暀紼?3) http://www.shnenglu.com/jack-wang/archive/2010/10/03/128501.html灝忕帇灝忕帇Sun, 03 Oct 2010 11:09:00 GMThttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128501.htmlhttp://www.shnenglu.com/jack-wang/comments/128501.htmlhttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128501.html#Feedback0http://www.shnenglu.com/jack-wang/comments/commentRss/128501.htmlhttp://www.shnenglu.com/jack-wang/services/trackbacks/128501.html杞細http://www.shnenglu.com/shaker/archive/2010/08/16/123599.html

1.2 澧炲姞鍔ㄤ綔


    姝ゆ椂鎴戜滑灝嗗彧鐢ㄤ竴縐嶅姩浣滐細transitions錛屾垜浠湪涓嬮潰鐨勪唬鐮佷腑鎻掑叆浜嗛粦浣撶殑閮ㄥ垎銆?/span>

 1#include <boost/statechart/transition.hpp>
 2
 3// 
 4
 5struct  Stopped;
 6struct  Active : sc::simple_state< Active, StopWatch, Stopped >
 7{
 8   typedef  sc::transition< EvReset, Active > reactions;
 9}
;
10
11struct  Running : sc::simple_state< Running, Active >
12{
13   typedef  sc::transition< EvStartStop, Stopped > reactions;
14}
;
15
16struct  Stopped : sc::simple_state< Stopped, Active >
17{
18   typedef  sc::transition< EvStartStop, Running > reactions;
19}
;
20
21//涓涓姸鎬佸彲浠ュ畾涔変換鎰忔暟閲忕殑鍔ㄤ綔銆傝繖灝辨槸涓轟粈涔堝綋澶氫簬涓涓椂錛?br>22//鎴戜滑涓嶅緱涓嶅皢瀹冧滑鏀懼埌涓涓猰pl::list<> 閲屻?/span>
23
24int  main()
25{
26  StopWatch myWatch;
27  myWatch.initiate();
28  myWatch.process_event( EvStartStop() );
29  myWatch.process_event( EvStartStop() );
30  myWatch.process_event( EvStartStop() );
31  myWatch.process_event( EvReset() );
32   return  0;
33}

34


    鐜板湪鎴戜滑鏈変簡鎵鏈夌殑鐘舵侊紝騫跺湪閫傚綋鐨勪綅緗鍔犱簡鎵鏈夌殑榪佺Щ鍔ㄤ綔錛屽悓鏃舵垜浠篃鍚慡topWatch鍙戦佷簡涓浜涗簨浠躲傝繖涓姸鎬佹満浼氬敖鑱屽敖璐g殑鎸夋垜浠殑甯屾湜榪涜鐘舵佽縼縐伙紝浣嗕緷鐒剁幇鍦ㄨ繕娌℃湁鍏跺畠鐨勫姩浣溿?/span>


1.3 State-local瀛樺偍


    涓嬩竴姝ユ垜浠皢璁╄繖涓猄top watch鐪熸鐨勮褰曟椂闂翠簡銆傛牴鎹畇top watch鎵澶勪笉鍚岀殑鐘舵侊紝鎴戜滑闇瑕佷笉鍚岀殑鍙橀噺銆?/span>

Stopped鐘舵侊細闇瑕佷竴涓繚瀛橀濆幓鏃墮棿鐨勫彉閲忋?/span>

l Running鐘舵侊細闇瑕佷竴涓繚瀛橀濆幓鏃墮棿鐨勫彉閲忥紝榪橀渶瑕佷竴涓繚瀛樹笂涓嬈″惎鍔ㄧ殑鏃墮棿鐐圭殑鍙橀噺銆?/span>

    鏃犺鐘舵佹満鍦ㄤ粈涔堢姸鎬佷笅錛屾垜浠兘蹇呴』瑙傚療閫濆幓鏃墮棿榪欎釜鍙橀噺銆傛澶栵紝褰撴垜浠悜鐘舵佹満鍙戦丒vReSet浜嬩歡鏃訛紝榪欎釜鍙橀噺搴旇琚疆涓?銆傚叾瀹冪殑鍙橀噺鍙槸鐘舵佹満鍦≧unning鐘舵佹椂闇瑕併傛棤璁轟綍鏃舵垜浠繘鍏unning鐘舵佹椂錛屽畠搴旇琚疆涓虹郴緇熸椂閽熺殑褰撳墠鏃墮棿銆傚綋鎴戜滑閫鍑篟unning鐘舵佹椂錛屾垜浠粎浠呬粠緋葷粺鏃墮挓鐨勫綋鍓嶆椂闂村噺鍘誨紑濮嬫椂闂達紙榪涘叆鏃惰褰曠殑鏃墮棿錛夛紝灝嗙粨鏋滃姞鍒伴濆幓鏃墮棿閲屽氨鍙互浜嗐?/span>

 1#include <ctime>
 2
 3// 
 4
 5struct  Stopped;
 6struct  Active : sc::simple_state< Active, StopWatch, Stopped >
 7{
 8   public :
 9     typedef  sc::transition< EvReset, Active > reactions;
10
11    Active() : elapsedTime_( 0.0 ) {}
12    double  ElapsedTime()  const  {  return  elapsedTime_; }
13    double  & ElapsedTime() {  return  elapsedTime_; }
14   private :
15     double  elapsedTime_ ;
16}
;
17
18struct  Running : sc::simple_state< Running, Active >
19{
20   public :
21     typedef  sc::transition< EvStartStop, Stopped > reactions;
22
23    Running() : startTime_( std::time( 0 ) ) {}
24    ~Running()
25    {
26       // 涓庢淳鐢熺被鍙互璁塊棶瀹冪殑鍩虹被鐩鎬技錛?br>27       //context<>() 鐢ㄦ潵鑾峰緱涓涓姸鎬佺殑鐩存帴鎴栭棿鎺ョ殑涓婁笅鏂囩殑璁塊棶鏉冦?br>28       // 榪欏彲浠ユ槸鐩存帴鎴栭棿鎺ョ殑澶栧眰鐘舵佹垨鐘舵佹満鏈韓
29       // (渚嬪錛屽儚榪欐牱: context< StopWatch >()).
30      context< Active >().ElapsedTime() +=
31        std::difftime( std::time( 0 ), startTime_ );
32    }

33   private :
34    std:: time_t  startTime_;
35}
;

    榪欎釜鐘舵佹満鐜板湪鍙互嫻嬮噺鏃墮棿浜嗭紝浣嗘槸鎴戜滑榪樹笉鑳界湅鍒扮粨鏋溿?/span>

鍦ㄨ繖閲岋紝State-local storage鐨勪紭鍔胯繕娌℃湁瀹屾垚鏄劇幇鍑烘潵銆傚湪FAQ欏圭洰“State-local storage閰峰湪鍝噷錛?#8221;涓紝浼氶氳繃涓庝竴涓病鏈夌敤State-local storage鐨凷top Watch鐨勬瘮杈冩潵璇存槑銆?/span>


1.4 鍦ㄧ姸鎬佹満澶栧緱鍒扮姸鎬佷俊鎭?/span>


    涓轟簡鍙栧緱嫻嬮噺鐨勬椂闂達紝鎴戜滑闇瑕佷竴涓粠鐘舵佹満澶栧緱鍒扮姸鎬佷俊鎭殑鏈哄埗銆傛寜鎴戜滑鐜板湪鐨勭姸鎬佹満璁捐錛屽彲浠ユ湁涓ょ鏂規硶銆備負綆鍗曡搗瑙侊紝鎴戜滑鍦ㄨ繖閲岀敤涓涓綆鏁堢殑鏂瑰紡錛歴tate_cast<>()(鍦⊿topWatch2.cpp涓垜浠細鐢ㄤ竴涓◢澶嶆潅涓鐐圭殑鏇夸唬鏂規硶)錛?span style="COLOR: #000080">璇戣呮敞錛氬湪StopWatch2.cpp涓槸鍚戠姸鎬佹満鍙戦佷竴涓彇寰楅濆幓鏃墮棿鐨勪簨浠訛紝浠庝簨浠舵垚鍛橀噺涓皢閫濆幓鏃墮棿甯﹀洖鏉?/span> 錛夛紝浠庡瓧闈㈡剰鎬濆氨鍙互鐪嬪嚭錛屽畠鍦ㄨ涔変笂涓巇ynamic_cast鏈夌偣鐩鎬技銆備緥濡傦紝褰撴垜浠皟鐢╩yWatch.state_cast<const Stpped&>()鏃訛紝褰撶姸鎬佹満鍦⊿topped鐘舵佹椂錛屾垜浠細寰楀埌涓涓猄topped鐘舵佺被鐨勫紩鐢ㄣ傚惁鍒欙紝浼氭姏鍑簊td::bad_cast寮傚父銆傛垜浠彲浠ュ埄鐢ㄨ繖涓姛鑳芥潵瀹炵幇涓涓猄topWatch鐨勬垚鍛樺嚱鏁幫紝璁╁畠鐨勭粨鏋滆繑鍥為濆幓鐨勬椂闂淬傜劧鑰岋紝鎴戜滑涓嶆槸鍏堥棶涓涓嬬姸鎬佹満鍦ㄤ粈涔堢姸鎬侊紝鐒跺悗鍐嶅幓鐢ㄤ笉鍚岀殑鏂規硶璁$畻閫濆幓鏃墮棿錛岃屾槸灝嗚綆楁斁鍒癝topped鍜孯unning鐘舵佷腑錛岀敤涓涓帴鍙f潵鑾峰緱閫濆幓閫濆幓鏃墮棿銆?/span>

 

  1. #include <iostream> 
  2. // ... 
  3. struct  IElapsedTime 
  4.    virtual   double  ElapsedTime()  const  = 0; 
  5. }; 
  6. struct  Active; 
  7. struct  StopWatch : sc::state_machine< StopWatch, Active > 
  8.    double  ElapsedTime()  const  
  9.   { 
  10.      return  state_cast<  const  IElapsedTime & >().ElapsedTime(); 
  11.   } 
  12. }; 
  13. // ... 
  14. struct  Running : IElapsedTime,  
  15.   sc::simple_state< Running, Active > 
  16.    public
  17.      typedef  sc::transition< EvStartStop, Stopped > reactions; 
  18.     Running() : startTime_( std::time( 0 ) ) {} 
  19.     ~Running() 
  20.     { 
  21.       context< Active >().ElapsedTime() = ElapsedTime(); 
  22.     }
  23.      virtual   double  ElapsedTime()  const  
  24.         { 
  25.            return  context< Active >().ElapsedTime() + 
  26.             std::difftime( std::time( 0 ), startTime_ ); 
  27.         } 
  28.        private
  29.         std:: time_t  startTime_; 
  30.     };  
  31.      
  32.      struct  Stopped : IElapsedTime,  
  33.       sc::simple_state< Stopped, Active > 
  34.     { 
  35.        typedef  sc::transition< EvStartStop, Running > reactions; 
  36.      
  37.        virtual   double  ElapsedTime()  const  
  38.       { 
  39.          return  context< Active >().ElapsedTime(); 
  40.       }  
  41.     }; 
  42.      
  43.      int  main() 
  44.     { 
  45.       StopWatch myWatch; 
  46.       myWatch.initiate(); 
  47.       std::cout << myWatch.ElapsedTime() <<  "\n" ;  
  48.       myWatch.process_event( EvStartStop() ); 
  49.       std::cout << myWatch.ElapsedTime() <<  "\n"
  50.       myWatch.process_event( EvStartStop() ); 
  51.       std::cout << myWatch.ElapsedTime() <<  "\n"
  52.       myWatch.process_event( EvStartStop() ); 
  53.       std::cout << myWatch.ElapsedTime() <<  "\n"
  54.       myWatch.process_event( EvReset() ); 
  55.       std::cout << myWatch.ElapsedTime() <<  "\n"
  56.        return  0; 
  57.     }

涓轟簡紜疄鐪嬪埌琚祴閲忕殑鏃墮棿錛屼綘搴旇鎯沖姙娉曞湪main()涓崟姝ユ墽琛屻係topWatch渚嬪瓙灝嗚繖涓▼搴忔墿灞曚負涓涓氦浜掑紡鐨勭粓绔▼搴忎簡銆?/span>



灝忕帇 2010-10-03 19:09 鍙戣〃璇勮
]]>
Boost鐨勭姸鎬佹満搴撴暀紼?2) http://www.shnenglu.com/jack-wang/archive/2010/10/03/128500.html灝忕帇灝忕帇Sun, 03 Oct 2010 11:07:00 GMThttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128500.htmlhttp://www.shnenglu.com/jack-wang/comments/128500.htmlhttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128500.html#Feedback0http://www.shnenglu.com/jack-wang/comments/commentRss/128500.htmlhttp://www.shnenglu.com/jack-wang/services/trackbacks/128500.html杞細http://www.shnenglu.com/shaker/archive/2010/08/16/123598.html

1 鍩虹涓婚錛氱琛?/strong>
    涓嬮潰鎴戜滑瑕佷負涓涓満姊扮琛ㄥ緩妯′竴涓姸鎬佹満銆傝繖鏍蜂竴涓琛ㄩ氬父浼氭湁涓や釜鎸夐挳銆?br>     * Start/Stop
     * Reset
     鍚屾椂鏈変袱縐嶇姸鎬侊細
     * Stoped: 琛ㄩ拡鍋滅暀鍦ㄤ笂嬈″仠姝㈡椂鐨勪綅緗細
        o 鎸変笅Reset鎸夐挳錛岃〃閽堝洖閫鍒?鐨勪綅緗傜琛ㄤ繚鎸佸湪Stoped鐘舵佷笉鍙樸?br>        o 鎸変笅Start/Stop鎸夐挳錛岀琛ㄨ漿鍒癛unning鐘舵併?br>     * Running: 琛ㄩ拡鍦ㄧЩ鍔紝騫舵寔緇樉紺鴻繃鍘葷殑鏃墮棿錛?/span>
        o 鎸変笅Reset鎸夐挳錛岃〃閽堝洖閫鍒?鐨勪綅緗紝縐掕〃杞埌鍋滄鐘舵併?br>        o 鎸変笅Start/Stop鎸夐挳錛岃漿鍒癝toped鐘舵併?br>    涓嬮潰鏄叾UML鍥撅細



1.1 瀹氫箟鐘舵佸拰浜嬩歡
涓や釜鎸夐挳鍙互寤烘ā涓轟袱涓簨浠躲傝繘鑰岋紝瀹氫箟鍑哄繀瑕佺殑鐘舵佸拰鍒濆鐘舵併傛垜浠粠涓嬮潰鐨勪唬鐮佸紑濮嬶紝浠ュ墠鐨勪唬鐮佺墖孌典細闄嗙畫鍔犲叆鍏朵腑錛?/span>

 

#include <boost/statechart/event.hpp>
#include 
<boost/statechart/state_machine.hpp>
#include 
<boost/statechart/simple_state.hpp>

namespace sc = boost::statechart;

struct EvStartStop : sc::event< EvStartStop > {};
struct EvReset : sc::event< EvReset > {};

struct Active;
struct StopWatch : sc::state_machine< StopWatch, Active > {};

struct Stopped;

// 榪欓噷鐨剆imple_state綾繪ā鏉垮彲浠ユ帴鍙?涓弬鏁幫細
// - 絎?涓弬鏁版寚瀹氬唴閮ㄧ殑鍒濆鐘舵侊紝濡傛灉鏈変竴涓繖鏍風殑鐘舵佺殑璇濄?br>//   鍦ㄨ繖閲岋紝Active鏈変竴涓唴閮ㄧ姸鎬侊紙Stoped錛夛紝 鎵浠ュ皢榪欎釜鍐呴儴
//   鍒濆鐘舵佷紶緇欏畠鐨勫熀綾匯?br>// - 絎?涓弬鏁版寚瀹氭槸鍚︿繚鐣欏拰淇濈暀浠涔堢被鍨嬪巻鍙?br>
// Active鏄渶澶栧眰鐨勭姸鎬侊紝鍥犳瑕佹妸瀹冩墍灞炵殑鐘舵佹満綾諱紶緇欏畠
struct Active : sc::simple_state<
  Active, StopWatch, Stopped 
> {};

// Stopped 鍜?nbsp;Running 閮芥妸Active浣滀負瀹冧滑鐨勪笂涓嬫枃錛岃繖浣夸粬浠祵鍏ュ埌浜咥ctive鐘舵佷腑銆?/span>
struct Running : sc::simple_state< Running, Active > {};
struct Stopped : sc::simple_state< Stopped, Active > {};

// 鍥犱負鐘舵佺殑涓婁笅鏂囧繀欏繪槸涓涓畬鏁寸殑綾誨瀷錛堜笉鑳藉崟鍗曟槸澹版槑錛夛紝
// 鎵浠ョ姸鎬佹満蹇呴』瑕佸湪“澶栧眰鐘舵?#8221;涔嬮棿鍏堝畾涔夈?br>// 涔熷氨鏄錛屾垜浠渶瑕佷粠鐘舵佹満寮濮嬶紝鐒跺悗鏄渶澶栧眰鐨勭姸鎬侊紝鐒跺悗鏄叾鍐呴儴鐨勭姸鎬侊紝濡傛鍙嶅銆?br>// 鎴戜滑鍙互鐢ㄥ箍搴︽垨娣卞害鏂瑰紡錛屽啀鎴栨槸浠ヤ袱閮芥販鍚堢殑鏂瑰紡鏉ヨ繘琛屽畾涔夈?/span>

int main()
{
  StopWatch myWatch;
  myWatch.initiate();
  
return 0;
}

榪欎釜浠g爜宸茬粡鍙互緙栬瘧浜嗭紝浣嗕笉浼氬彂鐢熶換浣曞彲瀵熻鐨勪簨浠躲?/p>

灝忕帇 2010-10-03 19:07 鍙戣〃璇勮
]]>
Boost鐨勭姸鎬佹満搴撴暀紼?1) http://www.shnenglu.com/jack-wang/archive/2010/10/03/128499.html灝忕帇灝忕帇Sun, 03 Oct 2010 11:06:00 GMThttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128499.htmlhttp://www.shnenglu.com/jack-wang/comments/128499.htmlhttp://www.shnenglu.com/jack-wang/archive/2010/10/03/128499.html#Feedback0http://www.shnenglu.com/jack-wang/comments/commentRss/128499.htmlhttp://www.shnenglu.com/jack-wang/services/trackbacks/128499.html杞細http://www.shnenglu.com/shaker/archive/2010/08/16/123597.html 浠嬬粛
    Boost鐘舵佹満搴撲竴涓簲鐢ㄧ▼搴忔鏋訛紝浣犲彲浠ョ敤瀹冨皢UML鐘舵佸浘蹇熺殑杞崲涓哄彲鎵ц鐨刢++浠g爜錛岃屼笉闇瑕佷換浣曠殑浠g爜鐢熸垚鍣ㄣ傚畠鏀寔鍑犱箮鎵鏈夌殑UML鐗瑰緛錛屽彲浠ョ洿鎺ヤ簡褰撶殑杞崲錛屽茍涓旇漿鎹㈠悗鐨刢++浠g爜灝卞儚瀵圭姸鎬佹満榪涜涓嬈℃枃鏈弿榪頒竴鏍峰叿浣撳彲璇繪с?br>
濡備綍闃呰榪欎釜鏁欑▼
    榪欎釜鏁欑▼鏄互綰挎ч槄璇葷殑鏂瑰紡榪涜鐨勭珷鑺傝璁°傚鏋滀綘鏄涓嬈$湅榪欎釜鏁欑▼鐨勮瘽錛屼綘鍙互浠庡ご寮濮嬭錛屽埌浣犺寰椾簡瑙g殑涓滆タ瀵逛綘鎵嬪ご鐨勪換鍔℃潵璇村凡緇忚凍澶熸椂灝卞仠姝€傚叿浣撳彲浠ヨ繖鏍鳳細
    * 濡傛灉浣犵殑浠誨姟鏄瀹炵幇涓涓皬鐨勩佺畝鍗曠殑錛屽茍涓旀湁寰堝皯鍑犱釜鐘舵佺殑鐘舵佹満錛岄偅涔堜笅闈㈢殑“鍒濈駭涓婚錛氱琛?#8221;閲屾墍璁茬殑灝卞樊涓嶅澶熶綘鐢ㄧ殑浜嗐?br>    * 濡傛灉浣犺鍋氫竴涓湁寰堝鐘舵佺殑澶у瀷鐘舵佹満錛屼綘鍙互鐪嬩竴涓?#8220;涓駭涓婚錛氭暟鐮佺浉鏈?#8221;錛岄偅閲岀殑璁茶В鍙兘瀵逛綘鏈夊府鍔┿?br>    * 鏈鍚庯紝濡傛灉浣犳槸涓涓鍒涘緩寮傚父澶嶆潅鐘舵佹満鐨勭敤鎴鳳紝鎴栬呮槸涓涓兂瑕佽瘎浼頒竴涓狟oost鐘舵佹満鐨勮璁″笀鐨勮瘽錛屼綘灝辮鐪嬩竴涓?#8220;楂樼駭涓婚”閮ㄥ垎銆傚茍涓旓紝鎴戣繕寮虹儓寤鴻浣犵湅涓涓婻ationle閲岀殑Limitions閮ㄥ垎銆?br>
Hello World!
    鎴戜滑灝嗚浠庝竴涓渶綆鍗曠▼搴忓紑濮嬫垜浠殑絎竴姝ワ紝鐘舵佸浘濡備笅錛?br>
瀵逛簬榪欎釜鐘舵佸浘錛屾垜浠殑瀹炵幇浠g爜濡備笅錛?
 1#include <boost/statechart/state_machine.hpp>
 2#include <boost/statechart/simple_state.hpp>
 3#include <iostream>
 4
 5namespace  sc = boost::statechart;
 6
 7// 涓轟簡閬垮厤鍐檖ublic錛屼笅闈㈠0鏄庣殑綾誨瀷鍏ㄩ儴涓簊truct銆?br> 8// 濡傛灉浣犱笉鍦ㄤ箮鐨勮瘽鍙互鎶婂畠浠兘鏀規垚class銆?br> 9
10// 鎴戜滑闇瑕佸厛澹版槑涓涓嬪垵濮嬬姸鎬侊紝榪欐槸鍥犱負鎴戜滑瑕佸湪瀹氫箟鐘舵佹満鏃朵嬌鐢ㄥ畠
11// 浣嗗張涓嶅緱涓嶅湪鐘舵佹満榪欏悗瀹氫箟瀹冦?/span>
12
13struct  Greeting;
14
15// Boost.Statechart澶ч噺搴旂敤妯℃澘妯″紡銆?br>16// 媧劇敓綾誨繀欏誨皢鑷繁鍋氫負鍩虹被妯℃澘鐨勭涓涓弬鏁般?br>17//
18// 鐘舵佹満蹇呴』瑕佺煡閬撳綋鍏跺垵濮嬪寲鍚庤繘琛岀殑絎竴涓姸鎬併?br>19// 榪欏氨鏄負浠涔圙reeting瑕佸仛涓烘瘡浜屼釜妯℃澘鍙傛暟銆?br>20// 錛堣瘧鑰呮敞錛氫篃灝辨槸璇碐reeting鐘舵佹槸Machine鐘舵佹満鍒濆鍖栧悗榪涘叆鐨勭涓涓姸鎬侊級
21struct  Machine : sc::state_machine< Machine, Greeting > {};
22
23// 瀵逛簬姣忎竴涓姸鎬侊紝鎴戜滑闇瑕佷負鍏舵寚鏄庯細瀹冨睘浜庡摢涓涓姸鎬佹満錛屽畠浣嶄簬鐘舵佸浘鐨勫摢涓綅緗?br>24// 鎴戜滑鐢╯imple_state<>鐨勪笂涓嬫枃鍙傛暟灝卞彲浠ュ畬鎴愯繖浜涙寚瀹氫簡銆?br>25// 瀵逛簬鎴戜滑鐩墠鐨勮繖涓畝鍗曠殑鐘舵佹満鏉ヨ錛屼笂涓嬫枃灝辨槸鐘舵佹満錛圡achine)
26// 鎵浠ワ紝Machine蹇呴』瑕佸仛涓簊imple_state鐨勭浜屼釜妯″潡鍙傛暟銆?br>27// 錛堝叧浜庝笂涓嬫枃鍙傛暟鐨勮緇嗚В閲婂湪涓嬩竴涓緥瀛愪腑鏈夛級
28struct  Greeting : sc::simple_state< Greeting, Machine >
29{
30  // 涓鏃︾姸鎬佹満榪涜涓涓姸鎬佺殑鏃跺欙紝瀹冨氨瑕佸垱寤轟竴涓浉搴旂姸鎬佺被鐨勫璞★紙綾誨疄渚嬶級
31  // 鍙鐘舵佹満淇濇寔鍦ㄨ繖涓姸鎬佷笅錛岃繖涓璞″氨浼氫竴鐩村瓨鍦ㄣ?br>32  // 鏈鍚庯紝褰撶姸鎬佹満紱誨紑榪欎釜鐘舵佹椂錛屽璞¤閿姣併?br>33  // 鎵浠ワ紝涓涓姸鎬佺殑榪涘叆鍔ㄤ綔灝辨槸榪欎釜鐘舵佺被鐨勬瀯閫犲櫒錛岃屽畠鐨勯鍑哄姩浣滃垯鏄畠鐨勬瀽鏋勭被銆?nbsp;  Greeting() { std::cout <<  "Hello World!\n" ; }  // 榪涘叆
34  ~Greeting() { std::cout <<  "Bye Bye World!\n" ; }  // 閫鍑?/span>
35}
;
36
37int  main()
38{
39  Machine myMachine;
40  // 鏋勯犲畬鐘舵佹満鍚庯紝瀹冨茍鏈紑濮嬭繍琛屻傛垜浠閫氳繃璋冪敤瀹冪殑initiate()鏉ュ惎鍔ㄥ畠銆?br>41  // 鍚屾椂錛屽畠涔熷皢瑙﹀彂瀹冪殑鍒濆鐘舵侊紙Greeting錛夌殑鏋勯犮?/span>
42  myMachine.initiate();
43  // 褰撴垜浠寮main()鍑芥暟鏃訛紝myMachine灝嗚閿姣侊紝榪欏皢瀵艱嚧瀹冮攢姣佸畠鍐呴儴鐨勬墍鏈夋椿鍔ㄧ殑鐘舵佺被銆?br>44  // 錛堣瘧鑰呮敞錛氫負浠涔堜細璇存墍鏈夛紵榪欐槸鍥犱負涓涓姸鎬佹満鍙互鍚屾椂淇濇寔鍦ㄥ涓姸鎬佷腑錛屽彲浠ュ弬鑰?#8220;楂樼駭涓婚”閮ㄥ垎錛?/span>
45  return  0;
46}
榪欎釜紼嬪簭浼氭樉紺?#8220;Hello World!”鍜?#8220; Bye Bye World! ”錛岀劧鍚庨鍑恒?/span>

灝忕帇 2010-10-03 19:06 鍙戣〃璇勮
]]>
vc7緙栬瘧boost 1.33.1璁板綍(杞?http://www.shnenglu.com/jack-wang/archive/2008/10/27/65217.html灝忕帇灝忕帇Mon, 27 Oct 2008 08:53:00 GMThttp://www.shnenglu.com/jack-wang/archive/2008/10/27/65217.htmlhttp://www.shnenglu.com/jack-wang/comments/65217.htmlhttp://www.shnenglu.com/jack-wang/archive/2008/10/27/65217.html#Feedback0http://www.shnenglu.com/jack-wang/comments/commentRss/65217.htmlhttp://www.shnenglu.com/jack-wang/services/trackbacks/65217.html
鎺ョ潃copy bjam.exe鍒?boost鐩綍錛屾墽琛宐jam -sBOOST_ROOT=. -sTOOLS=vc7 "-sBUILD=debug release <runtime-link>static/dynamic"

婕暱鐨勭瓑寰呭悗浼氬湪boost鐩綍涓嬬殑bin鏂囦歡澶逛腑鐢熶駭涓鍫唋ib,澶嶅埗鍒皊dk鐨刲ib璺緞涓嬶紝灝哹oost鐩綍娣誨姞鐨勫伐紼嬩腑銆俹k



涓婇潰鏄伓鐨勭粡鍘嗭紝濡傛灉浣犱笉鑳界紪璇戞垚鍔燂紝璇峰弬鑰冧笅闈㈢殑鏂囩珷

鍘熸枃鍑鴻嚜錛?a >http://unknown-error.spaces.live.com/blog/cns!9B12A9BDE11A3428!142.entry#comment



濡備綍寮濮嬩嬌鐢╞oost鐨勮法騫沖彴thread搴?Windows)

boost涓婚〉錛?/font>http://www.boost.org/
鍦ㄤ富欏電偣鍑籨ownload榪涘叆sourceforge欏甸潰涓嬭澆錛屽綋鍓嶆渶鏂扮増鏈負boost_1_33_1錛屾湁澶氱鏂囦歡鏍煎紡鍙緵涓嬭澆(鍖呮嫭.exe, .tar.gz絳?錛屽唴瀹圭浉鍚岋紝閮芥槸boost_1_33_1鐨勫叏閮ㄦ簮浠g爜銆備笅杞藉悗瑙e帇(鍋囪瑙e帇鐩綍涓篋:\boost\boost_1_33_1)銆?/font>
 
boost涓殑澶ч儴鍒嗗唴瀹歸兘鍙互鐩存帴婧愪唬鐮佷嬌鐢紝鑰宼hread鍒欓渶瑕侀鍏堢紪璇戝嚭瀵瑰簲鐨勫簱銆?/font>
 
Windows XP騫沖彴錛?/font>
      鎴戠殑鏈哄櫒涓婂畨瑁呬簡vc2003鍜寁c2005錛屽垎鍒湪D:\devenv\vs2003鍜孌:\devenv\vs2005鐩綍涓?/font>
1. 緙栬瘧jam錛圝AM鏄紪璇戝叾浠栧簱鐨勫熀紜錛?br>鍚姩鍛戒護琛岃繘鍏:\boost\boost_1_33_1\tools\build\jam_src鐩綍
榪愯build鍗沖彲
榪愯緇撴潫鍚庯紝灝嗘柊鍑虹幇bin.ntx86鐩綍錛屾垜浠墍闇瑕佺殑bjam.exe灝卞湪璇ョ洰褰曚笅銆?/font>
 
鏌ョ湅涓涓媌uild鏂囦歡鐨勫唴瀹癸紝鍙戠幇鍏惰嚜鍔ㄦ嫻媣c2003(vc7.1)鐨勫畨瑁呯洰褰曪紝鐒跺悗璋冪敤vc7.1緙栬瘧鍑虹殑bjam.exe銆傦紙浣跨敤浜哣S71COMNTOOLS瀹忥級
 
2. 緙栬瘧thread搴?/font>
鍚姩鍛戒護琛岃繘鍏:\boost\boost_1_33_1鐩綍
set VC71_ROOT=D:\devenv\vs2003\Vc7  (姝ゆ椂娌℃湁鑷姩媯嫻嬶紝鎵浠ラ渶瑕佷漢宸ユ寚瀹?
tools\build\jam_src\bin.ntx86\bjam.exe --with-thread stage (鍙紪璇憈hread搴?
 
緙栬瘧瀹屾垚鍚庯紝緇撴灉鍦―:\boost\boost_1_33_1\bin\boost\libs\thread\build鐩綍涓嬶紙鍖呮嫭debug/relase, dll/lib絳夛級錛涘彟澶栵紝鐢變簬鎴戜滑鍦ㄧ紪璇戞椂浣跨敤浜唖tage閫夐」錛屾墍浠ユ墍鏈夌殑緇撴灉閮藉皢琚嫹璐濆埌D:\boost\boost_1_33_1\stage\lib鐩綍涓嬨?/font>
 
鎬葷粨涓涓嬶紝
鍔ㄦ佸簱
libboost_thread-vc71-mt-gd-1_33_1.lib  +  boost_thread-vc71-mt-gd-1_33_1.dll (debug)      42.4k + 88.0k
libboost_thread-vc71-mt-1_33_1.lib     +  boost_thread-vc71-mt-1_33_1.dll    (release)    42.0k + 44.0k
闈欐佸簱
libboost_thread-vc71-mt-gd-1_33_1.lib  (debug)    2.61M
libboost_thread-vc71-mt-1_33_1.lib     (release)  782k
闈欐佸簱(runtime-link-static)
libboost_thread-vc71-mt-sgd-1_33_1.lib (debug)    2.19M
libboost_thread-vc71-mt-s-1_33_1.lib   (release)  692k

s Static link to runtime.
g Debug runtime.
d Debug enabled code.
 
 
3. 鍑嗗浣跨敤thread搴?/font>
    閫夌敤緙栬瘧寰楀埌鐨則hread鍔ㄦ佸簱銆?/font>
    灝哹oost_thread-vc71-mt-gd-1_33_1.lib閲嶅懡鍚嶄負libboost_thread-vc71-mt-gd-1_33_1.lib(鍓嶉潰鍔犱簡lib)
    灝哹oost_thread-vc71-mt-1_33_1.lib閲嶅懡鍚嶄負libboost_thread-vc71-mt-1_33_1.lib(鍓嶉潰鍔犱簡lib)
    灝嗚繖涓や釜鏂囦歡鎷瘋礉鍒癉:\devenv\vs2003\Vc7\PlatformSDK\Lib
 
    灝哹oost_thread-vc71-mt-gd-1_33_1.dll鎷瘋礉鍒皐indows鐨剆ystem32鐩綍涓?/font>
    灝哹oost_thread-vc71-mt-1_33_1.dll鎷瘋礉鍒皐indows鐨剆ystem32鐩綍涓?/font>
 
浠ヤ笂灝唗hread鐨刣ebug/release鐗堟湰鐨勫叡浜簱鎷瘋礉鍒扮郴緇熺洰褰曚笅錛屾帴涓嬪幓灝卞彲浠ヤ嬌鐢ㄤ簡銆?/font>
 
4. 浣跨敤thread搴?/font>
    鍦╲c2003涓垱寤轟竴涓┖鐨刉in32 Console Project錛屼唬鐮侊細
#include <boost/thread/thread.hpp>
#include <iostream>
void hello()
{
    std::cout << "Hello world, I'm a thread!" << std::endl;
}
main()
{
    boost::thread thrd(&hello);
    thrd.join();
}
 
    璁劇疆Project灞炴х殑Code Geneartion------Runtime Library 涓?/MDd 鎴栬?/MD
    璁劇疆Project灞炴х殑General-------Additional Include Directories涓?D:\boost\boost_1_33_1
 
    緙栬瘧榪愯鍗沖彲銆?/font>


灝忕帇 2008-10-27 16:53 鍙戣〃璇勮
]]>
久久99精品久久久大学生| 曰曰摸天天摸人人看久久久| 欧美日韩久久中文字幕| 免费一级欧美大片久久网| 国内精品久久久久影院老司| 麻豆一区二区99久久久久| 久久精品国产亚洲5555| 欧美日韩精品久久免费| 亚洲国产精品久久久久久| 国产免费久久精品99re丫y| 国产韩国精品一区二区三区久久| 精品久久久久久无码国产| 国产成人无码精品久久久性色| 成人久久精品一区二区三区| 亚洲国产成人久久笫一页| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久久久久久亚洲精品| 99久久人妻无码精品系列蜜桃| 久久精品中文字幕第23页| 国内精品久久九九国产精品| 久久这里只精品99re66| 国产精自产拍久久久久久蜜| 亚洲AV日韩精品久久久久久久| 国产亚洲精久久久久久无码AV| 亚洲香蕉网久久综合影视| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 精品久久人人妻人人做精品| 日韩人妻无码一区二区三区久久| 欧美性大战久久久久久| 亚洲伊人久久大香线蕉苏妲己| 久久久久久人妻无码| 日韩AV无码久久一区二区| 无码国产69精品久久久久网站 | 久久久久久久波多野结衣高潮| 久久播电影网| 久久996热精品xxxx| 久久九色综合九色99伊人| 国产三级精品久久| 国产精品欧美久久久久天天影视| 国产精品成人久久久久三级午夜电影| 欧美精品一本久久男人的天堂|