发现了在flash中保存字符串指针数组的方法

2020-01-10 19:39发布

目的:要将多个字符串保存在Flash中,同时将这些字符串的指针数组也保存在Flash中。目前试过能行得通的写法是:
typedef const char *  GUI_ConstString;
const char Null_Str[] = "";
const GUI_ConstString _lvTable_00[6] = {Null_Str,Null_Str,Null_Str,Null_Str,Null_Str,Null_Str};
这种方法比较灵活,且节省空间,每个字符串的长度可以不一样。

下面这种写法,行不通,字符串是保存在Flash中了,但指针数组保存在Ram中。
const char * _lvTable_00[6] ={Null_Str , Null_Str , Null_Str , Null_Str , Null_Str , Null_Str };

还有一种写法,和第一种写法看起来类似,但编译器警告,说const 重复使用,且结果也不是我们想要的。
const const char * _lvTable_00[6] ={Null_Str , Null_Str , Null_Str , Null_Str , Null_Str , Null_Str };

还有一种写法,虽然能达到目的,但不是很省空间了,要求每个字符串长度要一样,就是二维数组方式。
const char _lvTable_00[6][1] = {"","","","","",""};

这些代码在Keil MDK 4.12,Stm32上验证的,不知道还有没有别的写法。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。