更新进度
对不起,我忘记将此问题指定为Arduino问题。我只是假设它是一个预处理器问题,它独立于正在执行的平台。
我正在使用Arduino-Make,我正在尝试传入USERNAME和PASSWORD
BOARD_TAG = mega2560
CPPFLAGS = -DUSERNAME="$(USERNAME)" -DPASSWORD="$(PASSWORD)"
include $(ARDMK_DIR)/Arduino.mk
命令行:
make USERNAME="HELLO" PASSWORD="WORLD"
代码:
void setup() {
Serial.begin(9600);
String auth_raw2(USERNAME : PASSWORD);
Serial.println(auth_raw2);
}
void loop() {}
我收到此错误:
macro.ino:10:29: error: found ‘:’ in nested-name-specifier, expected ‘::’
macro.ino:10:20: error: ‘HELLO’ has not been declared
答案 0 :(得分:1)
你想要的是
String auth_raw( USERNAME ":" PASSWORD );
这将执行您正在寻找的正确的字符串连接。编译器将相邻的字符串文字一起运行到单个字符串中。所以,如果你有
char a[] = "The " "quick" " brown " "fox";
它对待它就像你写的那样
char a[] = "The quick brown fox";
我不确定是否“在命令行上提供的值附近”。
答案 1 :(得分:1)
根据the literature at Arduino's Site:
中连接就传递给makefile的变量而言,语法是正确的,命令行-D定义这些变量也是有效的。但是,正如文档所指出的那样,在传递给构造函数时应该避免混合整数和字符串,尽管首先构造String然后连接值是完全有效的。