Atmel Studio 6 没有用于 C++ 的 new 和 delete 运算符

tzo*_*zik 1 c++ avr atmel

我在 Atmel Studio 6 中使用了 ATMega32 uc。我有一些包含new操作符的代码。当我尝试使用它时,它说它没有定义,我不知道为什么。

我在谷歌上搜索了一些东西,但我还没有找到任何相关的东西。我能找到的只是定义newdelete操作符的代码片段,但我真的不想这样工作。也nullptr不见了。

还有其他解决方案吗?

sky*_*ift 5

在嵌入式情况下使用动态内存管理是完全可能的——你只需要小心你的做法。在这种情况下,使用malloc()andfree()可能更容易,但为了帮助兼容性,您可能需要将它们定义为newand deleteAVR Freaks 提供了有关该主题的一个很好的信息来源。

这些运算符不存在的原因很简单,因为 AVR-GCC 不完全支持 C++,只支持其中的一部分。这部分是由于嵌入式编程的性质 - 一些更高级的 C++ 功能可以快速消耗闪存和 RAM。嵌入式平台上的 C 与 C++ 争论是一个古老且经常激烈的争论,但通常归结为具体情况。这是关于该主题的另一个论坛主题