3

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

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

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

4

2 回答 2

3

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

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

于 2012-09-28T04:15:04.887 回答
2

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

据我所知,clock_tAVR Libc 中没有。我在库的源文件中搜索,并查看了文档,但没有找到。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++) 和 (C) 一样不可用time.h。也就是说,您很可能无法clock_t在 Arduino 环境中使用。

于 2012-09-28T07:37:42.123 回答