Как использовать PROGMEM в файле .h/.cpp вместо файла .ino?
Я хочу использовать множество файлов .h/.cpp, которые будут использоваться в моем скетче ino.
В одном из этих файлов .cpp (и позже) я хочу использовать константные массивы (например, таблицы поиска). Чтобы сохранить SRAM, я хочу использовать PROGMEM.
В наброске Ино раньше работало следующее:
const uint8_t _red[] PROGMEM = { 0, 9, 10, 220, 230, 240, 255 };
Но когда я помещаю строку выше в файл .h или .cpp, я получаю сообщение об ошибке:
Par.h:13:25: error: expected initializer before 'PROGMEM'
Должен ли я что-то включать или не могу использовать PROGMEM в файле .h/.cpp?
@Michel Keijzers, 👍-1
1 ответ
Лучший ответ:
▲ 1
Я уже нашел ответ.
Включить:
#include <avr/pgmspace.h>
Обновить
См. также замечание AnT, которое является более общим (и в большинстве случаев лучшим решением):
#include "Arduino.h"
(просто чтобы помочь другим с той же проблемой).
,
@Michel Keijzers
Смотрите также:
- Преимущества глобальных переменных перед статическими членами класса?
- Arduino IDE: как получить длину PROGMEM const?
- Печать элементов массива символов из PROGMEM
- Проблема при использовании PROGMEM для массива, содержащего заметки для говорящего на Arduino
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как справиться с rollover millis()?
... то есть, если у вас есть причина не включать
<Arduino.h>. Но если вы включите<Arduino.h>, то<avr/pgmspace.h>в любом случае будет включен в него., @AnT@AnT Спасибо за это замечание; Я добавил его в решение (я действительно думал, что пробовал раньше и не сработало, но это работает)., @Michel Keijzers