Как использовать 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?

, 👍-1


1 ответ


Лучший ответ:

1

Я уже нашел ответ.

Включить:

#include <avr/pgmspace.h>

Обновить

См. также замечание AnT, которое является более общим (и в большинстве случаев лучшим решением):

#include "Arduino.h"

(просто чтобы помочь другим с той же проблемой).

,

... то есть, если у вас есть причина не включать <Arduino.h>. Но если вы включите <Arduino.h>, то <avr/pgmspace.h> в любом случае будет включен в него., @AnT

@AnT Спасибо за это замечание; Я добавил его в решение (я действительно думал, что пробовал раньше и не сработало, но это работает)., @Michel Keijzers