提问人:Doku 提问时间:11/13/2023 最后编辑:Doku 更新时间:11/13/2023 访问量:25
是否可以在类中使用 PROGMEME?Arduino的
Is it possible to use PROGMEM inside a Class? Arduino
问:
你能在课堂上使用 PROGMEM 吗? 我有一个设置布尔数组的类,
请注意 PROGMEN 属性。
#include <Arduino.h>
class Test
{
public:
const bool PROGMEM a[130] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 1, 0, 0, 0, 0, 0, 0};
};
Test t;
void setup() {
Serial.begin(9600);
Serial.println((int) &t.a[3]);
Serial.println(pgm_read_byte(t.a + 3));
}
void loop() {
// put your main code here, to run repeatedly:
}
编译代码时,我遇到以下警告:
src\main.cpp:6:420: warning: '__progmem__' attribute ignored [-Wattributes]
const byte PROGMEM a[130] = ...
在没有类上下文的情况下在我的 main.cpp 中使用 PROGMEM 时,一切正常。这可能是类的问题,还是其他原因导致了问题?
如果问题与类有关,其背后的原因是什么?应该是指向程序存储器的指针吗?如果是这样的话,应该只是一个整数 (bool*)?为什么在这一切中,类会带来问题?a
a
答: 暂无答案
评论
Can you use PROGMEM in a class?
不。Program-Memory 是静态内存,您不能动态分配程序内存,因此不可能将其作为实例变量。a