我正在使用带有 Atmel Studio 6 的 ATMega32 uc。
我有一些包含 new
运算符的代码。
当我尝试使用它时,它说它未定义,我不知道为什么。
我在 Google 上搜索了一些东西,但我还没有找到任何相关的东西。我所能找到的只是定义 new
和 delete
运算符的代码片段,但我真的不想这样工作。 nullptr
也丢失了。
还有其他解决方案吗?
最佳答案
在嵌入式情况下使用动态内存管理是完全可能的——您只需要小心操作即可。在这种情况下,使用 malloc()
和 free()
可能更容易,但为了提高兼容性,您可能希望将它们定义为 new
和删除
。关于该主题的良好信息来源位于 AVR Freaks。 .
这些运算符不存在的原因很简单,AVR-GCC 不完全支持 C++,只是部分支持。这部分是由于嵌入式编程的性质——一些更高级的 C++ 功能可以快速消耗闪存和 RAM。嵌入式平台上的 C 与 C++ 争论是一个古老且经常激烈的争论,但通常归结为情况。这是另一个 another forum topic关于这个问题。
关于c++ - Atmel Studio 6 没有适用于 C++ 的 new 和 delete 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244822/