Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Atmel Studio 6没有针对C++;_C++_Avr_Atmel - Fatal编程技术网

C++ Atmel Studio 6没有针对C++;

C++ Atmel Studio 6没有针对C++;,c++,avr,atmel,C++,Avr,Atmel,我正在使用Atmel Studio 6的ATMega32 uc。 我有一些代码包含new操作符。 当我尝试使用它时,它说它没有定义,我不知道为什么 我在谷歌上搜索了一些东西,但还没有找到任何相关的东西。我能找到的只是定义new和delete操作符的代码片段,但我真的不想这样工作。此外,缺少nullptr 还有其他解决方案吗?听起来有点像嵌入式的东西。这不是一个罕见的情况,你只能使用C,而不是C++。p> 无论如何,new/delete和malloc()/free()在嵌入式世界中都不是一个好主意

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

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


还有其他解决方案吗?

听起来有点像嵌入式的东西。这不是一个罕见的情况,你只能使用C,而不是C++。p> 无论如何,new/delete和malloc()/free()在嵌入式世界中都不是一个好主意。您的程序在任何情况下都必须有效。没有办法失败。它只是n.a.您没有控制台或日志文件来编写消息,或者如果您有,没有人会检查它,没有人会处理错误。您可以闪烁红色led指示灯,但在大多数情况下,这是不允许的,例如踩下制动踏板应该操作制动器,而不是红色led二极管


您应该设置固定大小的池,而不是动态分配/取消分配项目,并且您没有选择不处理任何可能的输入。您的代码将充满“MAX_…”定义。

听起来有点像嵌入的东西。这不是一个罕见的情况,你只能使用C,而不是C++。p> 无论如何,new/delete和malloc()/free()在嵌入式世界中都不是一个好主意。您的程序在任何情况下都必须有效。没有办法失败。它只是n.a.您没有控制台或日志文件来编写消息,或者如果您有,没有人会检查它,没有人会处理错误。您可以闪烁红色led指示灯,但在大多数情况下,这是不允许的,例如踩下制动踏板应该操作制动器,而不是红色led二极管


您应该设置固定大小的池,而不是动态分配/取消分配项目,并且您没有选择不处理任何可能的输入。您的代码将充满“MAX_…”定义。

在嵌入式环境中使用动态内存管理是完全可能的-您只需小心操作即可。在这种情况下,使用
malloc()
free()
可能更容易,不过为了帮助实现兼容性,您可能希望将它们定义为
new
delete
。关于这个话题的一个很好的信息来源是


<> P>这些运算符不存在的原因仅仅是AVR GCC不完全支持C++,只是部分。这部分是由于嵌入式编程的本质——一些更先进的C++特性可以快速咀嚼闪存和RAM。C + VC++在嵌入式平台上的争论是一个古老而经常被加热的问题,但通常归结为这种情况。下面是关于这个主题的另一个例子。

在嵌入式环境中使用动态内存管理是完全可能的-您只需小心操作即可。在这种情况下,使用
malloc()
free()
可能更容易,不过为了帮助实现兼容性,您可能希望将它们定义为
new
delete
。关于这个话题的一个很好的信息来源是


<> P>这些运算符不存在的原因仅仅是AVR GCC不完全支持C++,只是部分。这部分是由于嵌入式编程的本质——一些更先进的C++特性可以快速咀嚼闪存和RAM。C + VC++在嵌入式平台上的争论是一个古老而经常被加热的问题,但通常归结为这种情况。下面是关于这个主题的另一个例子。

是否包含必要的头文件?是否包含必要的头文件?是的,但我确实需要实例化一些类。我不知道它们的编号,所以我必须动态地实例化它们。我通过串行发送pin配置,只有在那一刻,我才知道我将有多少(比如)LED。预先分配最大数量的东西。就像,你知道,创业公司:早早失败。如果你有30-40件东西,预先分配50件。如果50没有内存,你必须找到一个解决方案:更大的处理器,更少的功能(对象的属性更少)。我考虑过,但问题是每个引脚上可能有7个不同的进程,我没有足够的空间容纳224个实例。现在我只实现了两个进程,它们没有占用这么大的空间,但它们是最小的。是的,但我确实需要实例化一些类。我不知道它们的编号,所以我必须动态地实例化它们。我通过串行发送pin配置,只有在那一刻,我才知道我将有多少(比如)LED。预先分配最大数量的东西。就像,你知道,创业公司:早早失败。如果你有30-40件东西,预先分配50件。如果50没有内存,你必须找到一个解决方案:更大的处理器,更少的功能(对象的属性更少)。我考虑过,但问题是每个引脚上可能有7个不同的进程,我没有足够的空间容纳224个实例。现在我只实现了两个进程,它们没有占用这么大的空间,但它们是最小的。