使用BOOST库 多线程ThreadPool 编译错误"TIME_UTC was not declared in this scope"

转载 : https://blog.csdn.net/ydyang1126/article/details/51434265

https://github.com/vpython/visual/issues/3

原因:

boost版本在1.50后,将该TIME_UTC这个名字修改为TIME_UTC_, 

只需要将task_adaptors.hpp中的TIME_UTC修改为boost::TIME_UTC_即可.


修改名字的原因是C++ 11定义了TIME_UTC这个宏,为了避免冲突需要作此修改。


Arfrever commented on 7 Jul 2012

boost::TIME_UTC has been renamed to boost::TIME_UTC_ in Boost 1.50:
https://svn.boost.org/trac/boost/ticket/6940
https://svn.boost.org/trac/boost/changeset/78802

Errors during compilation of Visual with Boost 1.50:

In file included from ../dependencies/threadpool/include/threadpool/detail/pool_core.hpp:31:0,
                 from ../dependencies/threadpool/include/threadpool/pool.hpp:27,
                 from ../dependencies/threadpool/include/threadpool.hpp:21,
                 from ./core/util/render_manager.cpp:3:
../dependencies/threadpool/include/threadpool/detail/../task_adaptors.hpp: In member function ‘void boost::threadpool::looped_task_func::operator()() const’:
../dependencies/threadpool/include/threadpool/detail/../task_adaptors.hpp:138:26: error: ‘TIME_UTC’ was not declared in this scope
../dependencies/threadpool/include/threadpool/detail/../task_adaptors.hpp:149:28: error: ‘TIME_UTC’ was not declared in this scope

This patch fixes compilation:

--- dependencies/threadpool/include/threadpool/task_adaptors.hpp
+++ dependencies/threadpool/include/threadpool/task_adaptors.hpp
@@ -135,7 +135,11 @@
         if(m_break_s > 0 || m_break_ns > 0)
         { // Sleep some time before first execution
           xtime xt;
+#if BOOST_VERSION >= 105000
+          xtime_get(&xt, TIME_UTC_);
+#else
           xtime_get(&xt, TIME_UTC);
+#endif
           xt.nsec += m_break_ns;
           xt.sec += m_break_s;
           thread::sleep(xt); 
@@ -146,7 +150,11 @@
           if(m_break_s > 0 || m_break_ns > 0)
           {
             xtime xt;
+#if BOOST_VERSION >= 105000
+            xtime_get(&xt, TIME_UTC_);
+#else
             xtime_get(&xt, TIME_UTC);
+#endif
             xt.nsec += m_break_ns;
             xt.sec += m_break_s;
             thread::sleep(xt);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值