如何在 Arduino IDE 1.8.5+ 中启用 C++17
How to enable C++17 in the Arduino IDE 1.8.5+
所以我正在制作一个需要 std::variant 的程序,所以显然我需要 C++17,但在没有编译器标志的 Arduino 中没有,只是我不知道要做什么标志以及如何做更改编译器标志。 (顺便说一句,我使用的是 windows,而不是 Linux(尽管我有一台 Linux 笔记本电脑))
我试过使用 Arduino boost 库,但它似乎是为 C++ 而不是 Arduino 编写的,尽管它说它是为 Arduino 制作的,
我也尝试过变通方法,但它们占用了太多内存。
我希望它在 Arduino 中具有 std 或至少一个 std::variant 等价物,但我还没有找到实现它的方法。
提前致谢!
编辑:如果没有办法在 Arduino 中执行 C++17,那么有人可以 link 使用 C++ 编写 Arduino 开发板的教程
Arduino 编程语言是 C++ 的一个子集,有一些细微的变化。
您可以在项目中引用 .CPP 和 .H 文件,只要它们不使用 Arduino 不支持的 C++ 功能即可。
我相信有人最终会发挥创造力并找到一种方法将具有 C++17 功能的代码编译成 AVR 机器代码(如果他们还没有的话)。
但请记住,这些微型芯片通常 运行 频率为 10-20 MHz,工作内存约为 2 KB。标准模板库是 C++ 的一大飞跃,但当每个字节都很重要时,它可能不是最佳选择。
要使用 boost.variant 检查 https://github.com/vancegroup/arduino-boost
iostream、sstream、字符串、变体和其他类似的头文件在 avr-libc 和使用 avr-g++(和 avr-libc)的 Arduino 中不可用
你可以查看https://github.com/maniacbug/StandardCplusplus AND https://github.com/mike-matera/ArduinoSTL
要在没有已知数据类型的情况下分配值,您可以编写 class 并查看 https://github.com/radinParsaei/Value
所以我正在制作一个需要 std::variant 的程序,所以显然我需要 C++17,但在没有编译器标志的 Arduino 中没有,只是我不知道要做什么标志以及如何做更改编译器标志。 (顺便说一句,我使用的是 windows,而不是 Linux(尽管我有一台 Linux 笔记本电脑))
我试过使用 Arduino boost 库,但它似乎是为 C++ 而不是 Arduino 编写的,尽管它说它是为 Arduino 制作的, 我也尝试过变通方法,但它们占用了太多内存。
我希望它在 Arduino 中具有 std 或至少一个 std::variant 等价物,但我还没有找到实现它的方法。
提前致谢!
编辑:如果没有办法在 Arduino 中执行 C++17,那么有人可以 link 使用 C++ 编写 Arduino 开发板的教程
Arduino 编程语言是 C++ 的一个子集,有一些细微的变化。 您可以在项目中引用 .CPP 和 .H 文件,只要它们不使用 Arduino 不支持的 C++ 功能即可。
我相信有人最终会发挥创造力并找到一种方法将具有 C++17 功能的代码编译成 AVR 机器代码(如果他们还没有的话)。
但请记住,这些微型芯片通常 运行 频率为 10-20 MHz,工作内存约为 2 KB。标准模板库是 C++ 的一大飞跃,但当每个字节都很重要时,它可能不是最佳选择。
要使用 boost.variant 检查 https://github.com/vancegroup/arduino-boost
iostream、sstream、字符串、变体和其他类似的头文件在 avr-libc 和使用 avr-g++(和 avr-libc)的 Arduino 中不可用
你可以查看https://github.com/maniacbug/StandardCplusplus AND https://github.com/mike-matera/ArduinoSTL
要在没有已知数据类型的情况下分配值,您可以编写 class 并查看 https://github.com/radinParsaei/Value