C++ 强制常量数据保存在RAM而不是ROM中

C++ 强制常量数据保存在RAM而不是ROM中,c++,c,arduino,arm,embedded,C++,C,Arduino,Arm,Embedded,可以强制将常量值保存在RAM中,而不是在嵌入式设备上的ROM中,而不是作为编译器的建议。我希望保持从RAM读取的速度,但确保代码中的某些位置的值没有更改?您可以强制变量落在数据节或任何位置,并告诉编译器它不会被修改: 常量int变量_属性_节.data 指示节的方式取决于编译器,但通常_属性_)是有效的方法 要知道您想要的节,请检查启动代码,在那里您将看到它们的地址和大小或检查链接器。您可以强制将变量降落到数据节或任何位置,并告诉编译器它不会被修改: 常量int变量_属性_节.data 指示节的

可以强制将常量值保存在RAM中,而不是在嵌入式设备上的ROM中,而不是作为编译器的建议。我希望保持从RAM读取的速度,但确保代码中的某些位置的值没有更改?

您可以强制变量落在数据节或任何位置,并告诉编译器它不会被修改:

常量int变量_属性_节.data

指示节的方式取决于编译器,但通常_属性_)是有效的方法


要知道您想要的节,请检查启动代码,在那里您将看到它们的地址和大小或检查链接器。

您可以强制将变量降落到数据节或任何位置,并告诉编译器它不会被修改:

常量int变量_属性_节.data

指示节的方式取决于编译器,但通常_属性_)是有效的方法


要知道您想要的部分,请检查启动代码,在那里您将看到它们的地址和大小或检查链接器。

在Arduino上,它们将被放置在RAM中。问题是访问闪存需要特定操作,因为AVR uC具有分离的地址空间

如果没有特殊的编译器扩展,如gcc命名地址空间或PROGMEM,您将无法访问闪存中的数据

因此,所有常量数据都将放在RAM中。你不需要做任何事情


如果您决定从Arduino上的闪存访问它们,则需要执行一些操作。它们将被放置在RAM中。问题是访问闪存需要特定操作,因为AVR uC具有分离的地址空间

如果没有特殊的编译器扩展,如gcc命名地址空间或PROGMEM,您将无法访问闪存中的数据

因此,所有常量数据都将放在RAM中。你不需要做任何事情


如果您决定从闪存访问它们,您需要做一些事情

为什么要在RAM中设置一个常量?arduino上的RAM非常紧凑,在其中写入常量不是最好的主意?从闪存读取比从RAM读取需要更多的时间。但是我不希望代码中的值发生意外更改。为什么要在RAM中使用常量?arduino上的RAM非常紧凑,在其中写入常量不是最好的主意?从闪存读取比从RAM读取需要更多的时间。但我不希望代码中的值意外更改。您的代码无效,即使您修改它,也不会编译-在AVR上不会执行任何操作您的代码无效,也不会编译,即使您修改它-在AVR上也不会执行任何操作