Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.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++ c+中内存的使用+;_C++_Arrays_Atmel - Fatal编程技术网

C++ c+中内存的使用+;

C++ c+中内存的使用+;,c++,arrays,atmel,C++,Arrays,Atmel,我不知道该如何提出这个问题,但这里是这样的: 在我的ATMEL MCU中用C++编程时,我倾向于将“程序”变量和“用户”变量混合到同一个数据存储器中。这在时间上是一个麻烦,因为我想做一些预设,可以加载或保存。我不希望保存“程序”变量,因为程序将根据“用户”值生成正确的值。在内存中拆分这些内容是常见的做法吗?例如,PGM内存中的timercounter,数据内存中的thresholdByUser 在我的程序中,我制作了几个不同的函数,它们都有自己的用户变量集。 例如:设置有5个用户变量,生成器有

我不知道该如何提出这个问题,但这里是这样的:

  • 在我的ATMEL MCU中用C++编程时,我倾向于将“程序”变量和“用户”变量混合到同一个数据存储器中。这在时间上是一个麻烦,因为我想做一些预设,可以加载或保存。我不希望保存“程序”变量,因为程序将根据“用户”值生成正确的值。在内存中拆分这些内容是常见的做法吗?例如,PGM内存中的timercounter,数据内存中的thresholdByUser

  • 在我的程序中,我制作了几个不同的函数,它们都有自己的用户变量集。 例如:设置有5个用户变量,生成器有6个用户变量等等。。。 你会制作一个大数组,然后制作
    #定义setingsgeneratorspeed 1,#定义setingsbacklight 2
    作为位置,这样你就可以这样调用它们:
    array[generatorSpeed],array[setingsbacklight]
    ,还是你仍然会将其拆分,并使用结构orso收集它们

  • 在STK500上使用ATMELStudio4.0和ATMEGA644


    谢谢你所能给予的帮助

    假设您使用的是AT(X)Mega,当提到Atmel MCU的:IIRC时,它取决于您使用的编译器套件。对于gcc,如果您有一个类似于静态int的东西,它将转到PGM,并在程序运行时复制到RAM。因此,如果希望变量不在PGM内存中,则必须使它们成为堆栈或堆变量。常量和静态变量将始终驻留在这两个字段中。如果您不想只使用PGM常量,您可以指定它,但这需要特殊的读取操作。

    对于问题2,我将使用
    const int&settingX=array[Xoffset]
    而不是define。但这是假设需要迭代数组,否则我只定义单独的变量。

    您是在问低功耗嵌入式硬件的限制吗?对于C++编程,你的担心并不是很有效。嗨,我不是在问约束。我在寻求编程结构方面的帮助。以上问题是什么?正如我所说,你的担心在C++程序设计中是无效的。编译器将构造数据、计算寻址模式、计算偏移量等等。由于您提到了“相同的数据内存”,我假设您的目标是功能有限的硬件,一些嵌入式平台有自己的棘手领域。无论如何,如果您想将相关设置“打包”在一起,为什么不使用结构呢?这也将确保正确对齐。请指定您的体系结构。AVR的答案将与ARM的答案大不相同。我使用的是ATMELStudio4.0(我更喜欢它,而不是6.0)!我试试看!谢谢,您的目标是“包含”功能,如“pgm_read_byte”等吗?因为我就是这么做的。大量数据驻留在PGM内存中(如菜单文本等),并通过“PGM_read_byte”等方式读取。