使用USERNAME进行字符串化:PASSWORD但不能用于SERIAL:TOKEN?

时间:2014-07-26 02:17:38

标签: c++ makefile arduino c-preprocessor

我有以下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无效?

1 个答案:

答案 0 :(得分:1)

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

将SERIAL切换为DSERIAL使编译正常