解决keil MDK的 L6096W: String merge section xxx.o(.conststring) is not null-terminated. 警告问题

  • 编译警告如下:
    .\Objects\XX.axf: Warning: L6096W: String merge section xxx.o(.conststring) is not null-terminated.

  • 原因:
    跟 const 类型数组有关系。

查看map文件也发现,如果使用了static 关键字则编译器会给该变量分配一个flash地址并且很清楚的标注属性是constdata类型。 而如果没有static编译器可能会识图优化。
具体如下解释:(如果没有static的情况确实从map文件中是无法查找到tube_index变量的分配的)。
  • 举例:
    const uint8_t tube_index[] = { 9, 8, 7}; 这个数组就会报上述警告。改成:
    static const uint8_t tube_index[] = { 9, 8, 7}; 前面添加了static就不会有问题了。

  • 解决方案:
    在数组前面添加 static 。

posted @ 2026-05-28 08:26  svchao  阅读(49)  评论(0)    收藏  举报