开始使用boost cpu_timer,错误:'boost :: timer :: cpu_timer'尚未声明

时间:2012-03-18 02:53:46

标签: c++ boost gentoo

我正在尝试编译这个简单的程序,开始学习如何使用计时器:

#include <boost/timer.hpp>

using boost::timer::cpu_timer;
//...
nanosecond_type last_checkpoint_time = 0;
cpu_timer checkpoint_timer;  // start the timer

for (;;)
{
  //process_a_transaction();
  if (checkpoint_timer.elapsed().user - last_checkpoint_time > 5*1000000000LL)
  {
    //... create a checkpoint ...
    last_checkpoint_time = checkpoint_timer.elapsed().user;  
    cout << checkpoint_timer.elapsed().user << endl;
  }
}

我正在使用gentoo linux并发出以下命令进行编译:

g ++ -I / usr / include / boost-1_46 timer1.cpp -o timer

我收到这些错误:

timer1.cpp:3:21: error: ‘boost::timer::cpu_timer’ has not been declared
timer1.cpp:5:1: error: ‘nanosecond_type’ does not name a type
timer1.cpp:6:1: error: ‘cpu_timer’ does not name a type
timer1.cpp:8:1: error: expected unqualified-id before ‘for’
timer1.cpp:8:8: error: expected unqualified-id before ‘)’ token

我正在阅读errors and warnings下的文档,但我遇到的问题是我只有两个库:

/usr/lib/libboost_test_exec_monitor-1_46.a
/usr/lib/libboost_test_exec_monitor-mt-1_46.a

这是因为我在编译boost期间没有使用static-libs标志吗?使用static-libs会更好吗?也许这是一个切线。还有什么可能导致上面给出的错误?请原谅我的无知,因为我对C ++ / boost很陌生。

由于

3 个答案:

答案 0 :(得分:2)

我没有使用cpu_timer我自己,但快速Google搜索似乎表明您应该包含<boost/timer/timer.hpp>。至于nanosecond_type的错误,您需要使用另一个using语句。

答案 1 :(得分:1)

我想我弄清楚问题是什么。我在ver 1.49文档的原始帖子中引用了一个例子。 cpu_timer首先在ver 1.48的boost文档中讨论过。 gentoo上的稳定版本目前是1.46,测试只提供ver 1.47,ver 1.48是硬掩码。因此,我唯一的选择是从我的系统中删除提升,下载1.49的焦油并可能会破坏我的系统,或等待从1.48版本中删除硬掩码。

答案 2 :(得分:0)

在任何情况下,static-libs肯定都无关紧要,因为这是编译器错误,而不是链接器错误。在链接器阶段之前,它不会查看库,直到那时只有标题是相关的。