Как использовать 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
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как справиться с rollover millis()?
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
... то есть, если у вас есть причина не включать
<Arduino.h>
. Но если вы включите<Arduino.h>
, то<avr/pgmspace.h>
в любом случае будет включен в него., @AnT@AnT Спасибо за это замечание; Я добавил его в решение (я действительно думал, что пробовал раньше и не сработало, но это работает)., @Michel Keijzers