如何解决在 flash 中定义一个数组
我需要定义不同大小的不同数组并在闪存中定位它们。我在编译时知道第一个元素的值,结束极限值,我们称之为步长值。例如,第一个元素是 1,步长是 0.9,极限是 5。所以我的数组应该看起来像
const my_arr[] = {1.0,1.9,2.8,3.7,4.6};
你能帮我用 C 预处理器初始化这样的数组吗?
PS:这是用于微控制器的,因此修饰符 const 会将其放入闪存中,而不是 RAM 中
解决方法
C 预处理器无法识别浮点数
#include <stdio.h>
#define START 100
#define STEP 90
#define LIMIT 500
int my_arr[] = {
START,#if START + STEP < LIMIT
START + STEP,#if START + STEP + STEP < LIMIT
START + STEP + STEP,#if START + STEP + STEP + STEP < LIMIT
START + STEP + STEP + STEP,#if START + STEP + STEP + STEP + STEP < LIMIT
START + STEP + STEP + STEP + STEP,#if START + STEP + STEP + STEP + STEP + STEP < LIMIT
START + STEP + STEP + STEP + STEP + STEP,#endif
#endif
#endif
#endif
#endif
};
int main(void) {
for (int k = 0; k < sizeof my_arr / sizeof *my_arr; k++) {
printf("%g ",my_arr[k]/100.0);
}
puts("");
return 0;
}
输出:
1 1.9 2.8 3.7 4.6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。