只是从JS背景开始。
我正在研究物联网开发,并希望建立自己的存储库而不上传我的个人WiFi的SSID和密码。
据我了解,Platform IO提供了此platformio.ini
来设置build_flags
。
build_flags =
-D SSID="MySSID"
我不知道如何从我的CPP文件访问它们。我想将构建标记SSID中的值注入(inject)到我的* .cpp文件中。
#define SSID
void loop()
{
Serial.println(SSID);
}
上面没有向串行监视器写入任何内容。
我究竟做错了什么?该代码可以编译。
最佳答案
如@Azeem所述,您正在将SSID重新定义为一个空值。使用这样的预处理器,必须首先检查该值是否存在,如果不存在,则为其分配默认值。
这是一个简单的C++示例:
#include <iostream>
#ifndef SSID
#define SSID "(SSID not defined)"
#endif
int main()
{
std::cout << "SSID value: " << SSID << std::endl;
return 0;
}
您可以使用以下命令编译和运行代码:
g++ main.cpp -o main && ./main
如您所见,它显示
(SSID not defined)
。现在,编译并运行以下命令:
g++ main.cpp -o main -DSSID='"Hello, World!"' && ./main
将输出:
SSID value: Hello, World!
如果您想了解更多有关预处理程序指令的信息,cplusplus.com has very nice tutorial
另外,不要忘记在
Serial
中启动void setup()
。关于c++ - 如何使用Visual Code和Platform IO将环境变量注入(inject)CPP文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52580643/