你如何在Arduino上包含clock_t?

时间:2012-09-28 04:08:21

标签: c++ arduino clock

我正在尝试使用我创建自己的计时器库,它使用了clock_t。当我编译草图时,我不断收到错误。这是我不断获得error: 'clock_t' in namespace 'std' does not name a type的错误。

甚至可以使用clock_t。我写的库在c ++编译器上运行得很好,但不在这里。

我是这个Arduino的新手,任何帮助都会很好。提前谢谢。

2 个答案:

答案 0 :(得分:3)

我不熟悉Arduino,但在C ++中你必须#include <ctime>。可能在C ++实现中,clock_t为你工作ctime是通过另一个头部间接包含的,而Arduino的其他头部的实现不包括ctime。

这是C ++的一个问题;其他标准头文件中包含的头文件未由标准定义,因此当您无法直接包含正确的头文件时,不同的实现可能会产生不同的结果,因为每个实现都使用不同的间接包含。为避免这种情况,您应该小心,始终直接包含您使用的任何标准标题。这意味着您需要了解哪些标准标头提供哪些标准设施。 http://en.cppreference.com/w/可以帮助您。

答案 1 :(得分:2)

Arduino链接AVR Libc,大多数与C标准库类似的东西都来自它。

据我所知,AVR Libc中没有clock_t。我搜索了库的源文件,并查看了documentations,但没有找到它。 AVR Libc中也没有time.h

根据Arduino FAQ

  

... Arduino语言只是一组可以从代码中调用的C / C ++函数。您的草图经历了微小的更改(例如自动生成函数原型),然后直接传递给C / C ++编译器(avr-g ++)。所有标准的C和C ++构造supported by avr-g++都应该在Arduino中运行。 ...

AVR-libc FAQ

  

我可以在AVR上使用C ++吗?

     

但是,目前还没有对libstdc ++的支持,libstdc ++是完整C ++实现所需的标准支持库。这对可编译的C ++程序施加了许多限制。其中包括:

     
      
  • 显然,没有任何与C ++相关的标准函数,类和模板类可用。
  •   

因此,Arduino不为您提供C ++标准库 - 因此ctime(C ++)不可用time.h(C)。也就是说,很可能你不能在Arduino环境中使用clock_t