我有以下Makefile(如果你问我为什么包含你可以参考我的previous question)
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无效?
答案 0 :(得分:1)
所以看起来Arduino会覆盖$ SERIAL参数。
将SERIAL切换为DSERIAL使编译正常