コードで次の文字列を定数として宣言しています。目的は、コンパイルされた出力に単純なメタデータを格納するための粗雑で単純な方法を提供することです。
const char myString1[] ="abc123\0";
const char myString2[] = {'a','b','c','1','2','3','\0'};
16 進エディタで出力を調べると、他の文字列定数が表示されますが、「abc123」は表示されません。これにより、有効になっている最適化が原因で、行がプログラムで参照されないため、行がコンパイルされていないと考えられます。
これを強制的にコンパイルするコード内の方法、またはこのメタデータをバイナリに取得する別の方法 (コード内) はありますか? バイナリのポストコンパイルを操作したくありません。目標は、可能な限り単純にすることです。
コンパイラ フラグ
-O2 -g -Wall -c -fmessage-length=0 -fno-builtin -ffunction-sections -mcpu=cortex-m3 -mthumb