Я пытаюсь использовать библиотеку таймеров, которую я создал сам, она использует в ней clock_t. Когда я составляю эскиз, я продолжаю получать ошибки. Это ошибка, которую я продолжаю получать error: 'clock_t' in namespace 'std' does not name a type
,
Можно ли даже использовать clock_t. Библиотека, которую я написал, прекрасно работала на компиляторе c ++, но не здесь.
Я новичок в этом Arduino, любая помощь будет хорошей. Заранее спасибо.
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.
Я не знаком с Arduino, но в C ++ вы должны #include <ctime>
, Вполне возможно, что в реализации C ++, где у вас работал clock_t, ctime был включен косвенно через другой заголовок, тогда как реализация этого другого заголовка в Arduino не включала ctime.
Это проблема с C ++; Заголовки, включенные в другие стандартные заголовки, не определены стандартом, поэтому разные реализации могут давать разные результаты, если вы не можете напрямую включить правильные заголовки просто потому, что в каждой реализации используются разные косвенные включения. Чтобы избежать этого, вы должны быть осторожны, чтобы всегда напрямую включать любой стандартный заголовок, из которого вы что-либо используете. Это означает, что вам нужно знать, какие стандартные заголовки предоставляют какие стандартные средства. http://en.cppreference.com/w/ могу помочь тебе.