我正在尝试使用我创建自己的计时器库,它使用了clock_t。当我编译草图时,我不断收到错误。这是我不断获得error: 'clock_t' in namespace 'std' does not name a type
的错误。
甚至可以使用clock_t。我写的库在c ++编译器上运行得很好,但不在这里。
我是这个Arduino的新手,任何帮助都会很好。提前谢谢。
答案 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上使用C ++吗?
但是,目前还没有对libstdc ++的支持,libstdc ++是完整C ++实现所需的标准支持库。这对可编译的C ++程序施加了许多限制。其中包括:
- 显然,没有任何与C ++相关的标准函数,类和模板类可用。
因此,Arduino不为您提供C ++标准库 - 因此ctime
(C ++)不可用time.h
(C)。也就是说,很可能你不能在Arduino环境中使用clock_t
。