Нужна помощь по массиву данных

Тема в разделе "Arduino & Shields", создана пользователем sanik, 13 июл 2021.

  1. b707

    b707 Гуру

    sanik, замечания по коду нужны или "работает и ладно"?
     
  2. sanik

    sanik Гик

    В работе не проверял замечания лишними не будут
     
  3. b707

    b707 Гуру

    вот этот кусок интересный
    Код (C++):
     if (t.sec  == 00) {
        if (t.min == 10) { // если в текущем времени  10 минут
          if (t.hour == 00) { //  если в текущем времени  0 часов
            t = rtc.getTime(); // Get data from the DS3231
            w = t.dow - 1; // получаем день недели и отнимаем еденицу так как массив начинается с нуля
    - во первых. что это за "00" в первой строке? t.sec - это целое число. если вы хотите, чтобы там был ноль -так и пишите, что такое 00 никто не знает. То же самое относится к третьей строчке
    Ну и дальше - смотрите в первой. второй, третьей и пятой строке вы используете разные части структуры времени - t. Но читаете эту структуру почему-то между третьей и пятой строкой. Если у вас уже есть текущее время - почему вы день недели не берете из него? А если времени еще нет - то откуда берутся секунды. минуты и часы выше?
     
  4. sanik

    sanik Гик

    Спасибо забыл из своего кода про строку чтения времени Сейчас отредактирую
     
  5. SergeiL

    SergeiL Оракул Модератор

    С комментариями согласен, но так ли это принципиально в плане корректности работы кода? :)
     
  6. b707

    b707 Гуру

    "00" непринципиально, а чтение секунд и минут из еще неинициализированной структуры времени (пусть даже это происходит всего раз) - это реальный косяк.
    Тем более что исправляется это одним движением :)
     
  7. SergeiL

    SergeiL Оракул Модератор

    А что значит неинициализированной структуры касательно этого примера?
     
  8. b707

    b707 Гуру

    сначала удивился вопросу, а потом посмотрел - а ТС-то код уже переписал :)
    Поэтому Вы и не можете понять, что я имею в виду..

    Посмотрите кусок кода в моем сообщении #23 - первое чтение времени с часов было уже ПОСЛЕ проверки часов. минут и секунд
     
  9. SergeiL

    SergeiL Оракул Модератор

    Сейчас не знаю как по стандартам инициализируются переменные.
    А раньше, в Си, все глобальные переменные инициализировались нулями.
    Локальные - не инициализировались, поэтому там был хлам.
     
  10. Unixon

    Unixon Оракул Модератор

    Код (C++):
    uint8_t dow_flags[week] |= _BV(dow);