字符串化可用于USERNAME:PASSWORD,但不适用于SERIAL:TOKEN
Stringification working with USERNAME:PASSWORD but not for SERIAL:TOKEN?
我有以下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使编译正常
相关文章:
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 为什么 std::erase(std::erase_if) 不是适用于<algorithm>任何容器的模板?
- 为什么这适用于 G++ 而不是 CLANG?
- 为什么不区分大小写适用于 std::unordered_set的 std::hash 函数?
- 声明适用于 auto,但不能显式声明类型?
- 什么是通用运行时组件 #ifdef 适用于Windows(UWP)而不是iOS
- Windows 上的 Cmake 不添加共享库路径(适用于 linux)
- Typedef适用于结构,但不适用于枚举,仅适用于C++
- 为什么函数模板不理解 NULL,但适用于 nullptr
- 链接器读取库,但在其中找不到符号?未解析的外部符号,但仅适用于 Win32 而不是 x64
- Netbeans 8.1(适用于 C/C++)找不到我的编译器(gcc-6.0.0 开发版本)
- random_shuffle() 适用于 Windows,但不能在 Linux 上编译
- C++指针到方法模板推导在面向 x86 时不编译,但适用于 x64
- 不在异常中嵌入std::字符串的规则是否仍然适用于move构造函数
- 移动文件夹Windows c++:适用于Vista及以上版本,不包括XP
- 适用于Android的Qt找不到任何兼容的设备答案找到但不知道如何
- 在Windows 7上不起作用,但它适用于Windows 8 dll。
- 可变参数模板转换为 std::function<R(ARGS...)>适用于 GCC 而不是 MSVC2013,为什么?
- C++11 cmath 函数不在 std 命名空间中,适用于 android NDK w/gcc-4.8 或 clang