802.15.4 で AES を実装する古いプロジェクトからコードを取得しました。これは、次のようにデフォルト キーを定義します。
static uint8_t default_key_source[8] = {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
その後、次の方法でこれを使用するテーブルを定義します。
uint8_t mac_key_table[34] =
{
// KeyIdLookupList[1].LookupData : macDefaultKeySource || g_Sec_KeyIndex_1
default_key_source[0], // LookupData[0]
default_key_source[1], // LookupData[1]
default_key_source[2], // LookupData[2]
default_key_source[3], // LookupData[3]
default_key_source[4], // LookupData[4]
default_key_source[5], // LookupData[5]
default_key_source[6], // LookupData[6]
...
}
コンパイル時に「式には定数値が必要です」というエラーが表示されます。以前は別のコンパイラでコンパイルしていたため、これは奇妙です(正確にはわかりませんが、ARM用のIAR組み込みワークベンチを使用しています)
default_key_source の static 宣言の前に const を追加してみました。しかし、それは役に立ちませんでした。コンパイラは変数で構造体を初期化できないことがわかりましたが、これらの変数は定数なので、ここで何が問題なのですか?