gpt4 book ai didi

c++ - 如何使用 Visual Code 和 Platform IO 将环境变量注入(inject) CPP 文件?

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:08 24 4
gpt4 key购买 nike

刚从 JS 背景开始。

我正在研究物联网开发,并希望在不上传我个人 WiFi 的 SSID 和密码的情况下建立自己的存储库。

据我所知,平台 IO 提供此 platformio.ini 以设置 build_flags

  build_flags = 
-D SSID="MySSID"

虽然我不知道如何从我的 CPP 文件访问它们。我想将构建标志 SSID 的值注入(inject)到我的 *.cpp 文件中。

  #define SSID

void loop()
{
Serial.println(SSID);
}

上面没有向串行监视器写入任何内容。

我做错了什么?代码确实可以编译。

最佳答案

我知道已经两年了,您可能已经离开这个问题了。但是,对于其他任何人(例如我自己)通过 Google 搜索遇到此问题,这里是我找到的答案:

根据 PlatformIO's Dynamic Variables页面,您正确定义了构建变量,以便它存在于 C++ 中(作为宏);即,-DSSID="MySSID"。然而,您错过的是这些值需要被引用(并且可能被转义):-DSSID='"MySSID"' 这样当您在 C++ 中访问宏时它是一个 const char * 字符串而不是未知符号。

查看页面底部的警告,并注意字符串两边的引号:

Be careful with special characters in system environment variables on Unix systems, especially when they are used as the value for preprocessor directives. Symbols like $, &, ~, etc must be explicitly escaped, for example:

export WIFI_PASS='\"my\~p\&a\\\$\$\$\$word\"'

最初对我来说也不是显而易见的,但它是有道理的,因为预处理器将用您定义的任何内容替换 SSID,并且根本不对其或其类型做出任何假设。

关于c++ - 如何使用 Visual Code 和 Platform IO 将环境变量注入(inject) CPP 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com