Как вы включаете часы на Arduino?

Я пытаюсь использовать библиотеку таймеров, которую я создал сам, она использует в ней clock_t. Когда я составляю эскиз, я продолжаю получать ошибки. Это ошибка, которую я продолжаю получать error: 'clock_t' in namespace 'std' does not name a type,

Можно ли даже использовать clock_t. Библиотека, которую я написал, прекрасно работала на компиляторе c ++, но не здесь.

Я новичок в этом Arduino, любая помощь будет хорошей. Заранее спасибо.

3

Решение

Arduino ссылки против AVR Libc, и большинство вещей, которые похожи на стандартную библиотеку C, происходят из этого.

Насколько я знаю, нет clock_t в AVR Libc. Я искал среди исходных файлов библиотеки, и посмотрел вокруг документация, но не нашел его. Здесь нет time.h в AVR Libc тоже нет.

И согласно Arduino FAQ:

…язык Arduino — это просто набор функций C / C ++, которые можно вызывать из вашего кода. Ваш эскиз претерпевает незначительные изменения (например, автоматическое создание прототипов функций) и затем передается непосредственно компилятору C / C ++ (avr-g ++). Все стандартные конструкции C и C ++ поддерживается avr-g ++ должен работать в Arduino. …

И в AVR-libc FAQ:

Могу ли я использовать C ++ на AVR?

Однако в настоящее время нет поддержки libstdc ++, стандартной библиотеки поддержки, необходимой для полной реализации C ++. Это накладывает ряд ограничений на программы на C ++, которые могут быть скомпилированы. Среди них:

  • Очевидно, что ни одна из стандартных функций, классов и шаблонных классов, связанных с C ++, недоступна.

Итак, Arduino не предоставляет стандартную библиотеку C ++ для вас — так ctime (C ++) не доступен, а также time.h (С). То есть, скорее всего, вы не можете использовать clock_t в среде Arduino.

2

Другие решения

Я не знаком с Arduino, но в C ++ вы должны #include <ctime>, Вполне возможно, что в реализации C ++, где у вас работал clock_t, ctime был включен косвенно через другой заголовок, тогда как реализация этого другого заголовка в Arduino не включала ctime.

Это проблема с C ++; Заголовки, включенные в другие стандартные заголовки, не определены стандартом, поэтому разные реализации могут давать разные результаты, если вы не можете напрямую включить правильные заголовки просто потому, что в каждой реализации используются разные косвенные включения. Чтобы избежать этого, вы должны быть осторожны, чтобы всегда напрямую включать любой стандартный заголовок, из которого вы что-либо используете. Это означает, что вам нужно знать, какие стандартные заголовки предоставляют какие стандартные средства. http://en.cppreference.com/w/ могу помочь тебе.

3