Как заставить return вернуть значение в функции?
- Войдите на сайт для отправки комментариев
Сб, 28/10/2017 - 08:18
Здравствуйте!
Имеется скетч с функцией printDateTime():
#include <Wire.h> #include <RtcDS3231.h> RtcDS3231<TwoWire> Rtc(Wire); void setup () { Serial.begin(57600); Rtc.Begin(); } void loop () { RtcDateTime now = Rtc.GetDateTime(); printDateTime(now); delay(5000); } #define countof(a) (sizeof(a) / sizeof(a[0])) void printDateTime(const RtcDateTime& dt) { char datestring[20]; snprintf_P(datestring, countof(datestring), PSTR("%02u/%02u/%04u %02u:%02u:%02u"), dt.Month(), dt.Day(), dt.Year(), dt.Hour(), dt.Minute(), dt.Second() ); return datestring; }
Ошибка: return-statement with a value, in function returning 'void' [-fpermissive]
В чем проблема?
http://arduino.ru/Reference/FunctionDeclaration
Спасибо.
Однако после смены void на char, ошибка компиляции стала следующей:
invalid conversion from 'char*' to 'char' [-fpermissive]
Что опять не так :(
Почитай этюды про память. Здесь, вшапке
Grove - у вас опыт, видимо, нулевой? Много обьяснять придется...
Лучше бы вы почитали какую-нить толстую книжку про Си - про символы, символьные массивы, переменные и ссылки на них. Про передачу парметров по значению и по ссылке, область видимости, инициализацию и очистку переменных... это далеко не полный список того, что нужно знать. чтобы правильно передать ваши данные из процедуры в основную программу. Пока вы их передаете в корне неверно.
И не надейтесь получить готовый ответ. Даже если кто-то напишет, как правильно передать время из функции - все равно уже на следующей строчке кода вы опять споткнетесь о что-то другое. И так будет постоянно, если нет базовых знаний.
Вот так как то )
Динозавр , а вы хоть это компилировали? Или крутые знатоки не нуждаются в проверке своих "знаний." хоть это скорее "незнание".
ПС: Вот вариант скетча для ТС. Но не понятно зачем тогда возвращать если он снаружи.
Но мне понравился этот скеч, но он точно к теме не относится.
invalid conversion from 'char*' to 'char' [-fpermissive]
Что опять не так :(
Насколько я понял из кода , Вы пытыетесь вернуть из функции локально объявленный массив. Так нельзя делать.
ПС: Вот вариант скетча для ТС. Но не понятно зачем тогда возвращать если он снаружи.
И действительно, зачем?