struct button {
static int pin;
bool pressed;
};
button Kreis1Button[] = {15, false};
void setup() {
pinMode(Kreis1Button[0].pin, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
}
你好,
我想在我的arduino sketch中使用一个结构来管理我的按钮数据和状态。但是当我想使用结构中的变量时,我收到链接器错误。
/home/USER/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /home/USER/.var/app/cc.arduino.IDE2/cache/arduino/sketches/****/sketch/sketch_may1a.ino.cpp.o:(.literal._Z5setupv+0x0): undefined reference to `button::pin'
collect2: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1
我已经研究了其他一些问题,但找不到足够的答案。但我读到这可能是 Arduino ide 内部的错误。
在使用该类之前必须初始化静态成员:
struct button {
static int pin;
bool pressed;
};
int button::pin = 15;
button Kreis1Button[] = {false};
void setup() {
pinMode(Kreis1Button[0].pin, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
}
如果您希望每个按钮都有自己的引脚号,那么引脚不能是静态的。在类中,
static
表示只有一个该变量被该类的所有实例共享。因此,只有当所有按钮都具有相同的引脚时,这才有意义。