0
CのARM-GCC const文字列配列を定義して直接アクセスする場合、文字列は.rodataセクションに正しく配置されます。arm gcc const stringの配列がrodataに配置されていません
ただし、構造体に.dataセクションに配置された文字列配列へのポインタがあり、RAMを使用している場合。 myStringを読み込み専用セクションに配置してRAMを保存するにはどうすればよいですか?
const char * myStrings[] = {"String1", "String2"}; //.rodata
const char * myStrings2[] = {"String3", "String4"}; //.data
typdef struct {
const char ** strings;
int a;
} mystruct_t;
const mystruct_t mystruct = {myStrings2,2};
void main()
{
for(uint8_t i=0;i<2;i++)
{
printf("%s",myStrings[i]);
printf("%s",mystruct.strings[i]);
}
}
編集:指定された最小コード。
.dataに配置されている文字列リテラル自身またはポインタの配列ですか? – Dmitri
これは有効なCコードではありません。 [ask]を読んで[mcve]を提供してください!ポインタは配列ではないことに注意してください。 – Olaf
... 'const mystruct_t = {myStrings、2};の識別子がありません。 – Dmitri