如何在Arduino中包含clock_t

How do you include clock_t on an Arduino?

本文关键字:clock 包含 Arduino      更新时间:2023-10-16

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

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

我对这个Arduino的东西很陌生,任何帮助都会很好。提前谢谢。

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

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

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

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

根据Arduino常见问题解答:

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

在AVR libc常见问题解答:

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

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

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

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