字符串化可用于USERNAME:PASSWORD,但不适用于SERIAL:TOKEN

Stringification working with USERNAME:PASSWORD but not for SERIAL:TOKEN?

本文关键字:不适用 适用于 TOKEN SERIAL PASSWORD 用于 USERNAME 字符串      更新时间:2023-10-16

我有以下Makefile(如果你问我为什么有"包括你可以参考我之前的问题)

BOARD_TAG    = mega2560
CPPFLAGS     = -DUSERNAME="$(USERNAME)" -DPASSWORD="$(PASSWORD)"
include $(ARDMK_DIR)/Arduino.mk

和代码:

void setup() {
  Serial.begin(9600);
  String auth_raw2(USERNAME ":" PASSWORD);
  Serial.println(auth_raw2);
}
void loop() {}

当我用make USERNAME=hello PASSWORD=world编译时,一切正常,我看到'hello:world'被打印出来。

但是,如果我将USERNAME替换为SERIAL, PASSWORD替换为TOKEN:

BOARD_TAG    = mega2560
CPPFLAGS     = -DSERIAL="$(SERIAL)" -DTOKEN="$(TOKEN)"
include $(ARDMK_DIR)/Arduino.mk

void setup() {
  Serial.begin(9600);
  String auth_raw2(SERIAL ":" TOKEN);
  Serial.println(auth_raw2);
}
void loop() {}

我得到错误,macro.ino:5:27: error: expected ‘)’ before string constant

请注意,$USERNAME在我的linux机器上被定义为disappearedng,而$PASSWORD, $SERIAL和$TOKEN是未定义的。

为什么对USERNAME:PASSWORD有效而对SERIAL:TOKEN无效?

所以看起来Arduino覆盖了$SERIAL参数。

将SERIAL切换为DSERIAL使编译正常

相关文章: