Задал одномерный массив строк-констант без указания размерности.Тупо через запятую вписываю строки произвольной длины не считая. Компилятор сам присвоит им индексы. Как при исполнении узнать максимальный индекс, то бишь число элементов массива ? С уважением. ПС. Зря создал тему. все просто : Имеем - const String messages[] ; Стандартная функция int x = sizeof(messages) ; x / 6 == количеству строк, элементов массива. ППС. Решил сделать маленький билборд, чтоб на лето вывесить рекламку на даче. Нашел проект с бегущей строкой. Сделал вариант "беглеца" с остановкой в нужном месте. Теперь он может и бегать и останавливаться, и обратно возвращаться. Сейчас может гнать строку, показывать время и температуру. Памяти UNO еще 50%. Думаю чем ее еще забить. Всем спасибо.
Число "6" в реале есть размер идентификатора строки в массиве строк. Коды Serial.println( sizeof(messages) / sizeof(messages[0]) и Serial.println( sizeof(messages) / 6) имеют совершенно одинаковый размер и результат. Это значит, что в коде реально нет процедуры sizeof(messages[0]. Компилятор просто подставляет заранее известное число 6.
Ты ошибаешься, 6 - это размер в байтах экземпляра класса String. Завтра оно может поменяться при очередном исправлении библиотек и твой код работать не будет, а ты себе все волосы на опе вырвешь в попытке понять, что не так. А вот sizeof(message[0]) всегда даст правильный размер.
Утверждение верно для конкретной целевой платформы и конкретной реализации класса String. Так лучше не делать. Здесь Вы правы. sizeof действительно выполняется на этапе компиляции. Но повторюсь результат sizeof(messages[0]) может быть разным. Не правильно. Число "6" -- это размер класса String. Если речь идёт про Arduino, то это: два байта -- указатель на буфер символов char*, два байта -- размер буфера int и два байта -- количество символов в буфере (длина строки) int. И вот эти указатели и int'ы не всегда будут 16-тибитными. Да и полей в другой реализации класса String может быть больше. PS: DetSimen немного опередил....
Вот что значит профессионалы. Я словами даже сказать не знаю как. А уж тем более сформулировать запрос к гуглу. Потому и задаю вопросы тута. Караул. Что-то в последнее время у меня Амперка жутко глючит. Тормозит и даже вылетает. Вот только что в очередной раз.