我有以下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使编译正常