【问题标题】:flash data initialization by C compiler由 C 编译器初始化闪存数据
【发布时间】:2021-09-08 02:54:36
【问题描述】:

我有一些数据存储在闪存中。此数据必须封装在单个文件中,因此它是静态的。

static const int my_array[1024];
static const int my_example[] = { -1, -1, -1};

第一行做了我需要的一切,除了为这个数组的每个元素写 0。它是闪存,所以我想将它初始化为-1(0xFFFFFFFF)。当然,我可以像第 2 行一样单独初始化每个元素,但我的数组有很多数据。

是否可以使用 C99 为 ARMCC 和 GNU 做我想做的事情? 提前谢谢你。

【问题讨论】:

    标签: gcc arm c99


    【解决方案1】:

    宏来拯救:

    #define FILL4 -1, -1, -1, -1
    #define FILL16 FILL4, FILL4, FILL4, FILL4
    #define FILL64 FILL16, FILL16, FILL16, FILL16
    #define FILL256 FILL64, FILL64, FILL64, FILL64
    static const int my_array[1024] = {FILL256, FILL256, FILL256, FILL256};
    

    【讨论】:

    • 我想你的意思是最后一行的 FILL256 是吗?
    • 这是一种解决方法。可以通过多种方式完成。不是我问题的答案。
    • @Submin 那么我一定不明白这个问题。如果这不符合条件,您正在寻找什么样的答案?你觉得这方面的哪一方面不满意?
    • Yuri,您确实理解了我的问题,并且您提出了解决方法。似乎没有其他方法可以强制编译器使用除 0 之外的任何其他值来初始化整个数组。谷歌搜索这个问题我确实看到了类似 [100] = [{0,...50] = 0xFF,] 的语法。两个编译器都没有理解它。试图再次找到它以将其发布在这里,但不幸的是无法找到。斯帕西博。
    猜你喜欢
    • 2018-10-19
    • 2012-04-29
    • 2017-02-09
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多