-2

在 AsyncWebServer中使用模板,您可以在 %% 中定义变量,如下所示:

const char my_arr[] PROGMEM = R"rawliteral(some text with some %var_name%)rawliteral";

%% 之间的值被替换为处理器函数:

String processor(const String& var)

其中 var 是“var_name”。

它在 90% 的情况下都能正常工作,但有些变量无法读取(“module_name”、“pm_constant” - 如您所见,没有特殊字符等)。如果我用“module_nam”替换“module_name”,它会再次运行良好。变量作为一堆随机特殊字符传递给函数,例如“????” 或“<?:D?”。

代码用于 ESP32、Arduino IDE。多个 ESP32、重启、多次闪烁、更改变量位置等问题仍然存在。

为什么?PROGMEM 和变量替换究竟是如何工作的?

4

0 回答 0