提升日期/时间microsec_clock无法正确编译

时间:2013-09-10 23:07:51

标签: c++ linux boost-date-time

我正在尝试使用C ++ Boost库v1.41的日期/时间工具。 (注意:这是Linux,而不是Windows; g ++ v4.4.7)

代码:

#include <boost/date_time/posix_time/posix_time.hpp>
using boost::posix_time::ptime;
using boost::date_time::microsec_clock;
 :
t1 = (boost::date_time::microsec_clock::local_time()); // line 208

错误:

tom.cpp:208: error: 'template<class time_type> class boost::date_time::microsec_clock' used without template parameters

现在,在boost / date_time / posix_time / posix_time_types.hpp中有这个:

#ifdef BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
  //! A time clock that has a resolution of one microsecond
  /*! \ingroup time_basics
   */
  typedef date_time::microsec_clock<ptime> microsec_clock;
#endif

我得出的结论是BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK未定义,导致typedef永远不会发生,导致对“microsec_clock”的引用看起来像是需要模板参数。

据我所知,我正在关注Boost date_time documentation信。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我现在有同样的问题。 昨天它可以正常工作,但是今天由于svn损坏问题,我需要删除所有已编译的库并重新编译它们。自从发生此错误以来。

修复它的方法非常简单。 只需使用

t1 = (boost::posix_time::microsec_clock::local_time());

代替

t1 = (boost::date_time::microsec_clock::local_time());

这会将时间类型预设为posix格式,但无法解决BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK的初始问题。

我希望这对您有所帮助。