メモリ位置の特定の値に応じた値の定義に問題があります。メモリ位置の特定値による値の定義
基本的には、特定のメモリ位置で値を読み取り、この値から定義を作成します。そして、この同じ定義を使用して、コードをコンパイルするときの最初の定義値に従って新しい値を再び定義します。あなたの助けのための
#define MY_DEFINE_VALUE (*(uint32_t *)0x0800C200)
// 8 kBytes of EEPROM
// First section base address is 0x08080000
// Second section base address is 0x08081000
#if (MY_DEFINE_VALUE < 0x0200)
#define EEPROM_BASE ((uint32_t)0x08080000)
#else
#define EEPROM_BASE ((uint32_t)0x08081000)
#endif
ありがとう:
はここに私の例です。
あなたは住所を間接参照しています。それは前処理時には行えません。 –
式 '*(uint32_t *)0x0800C200'は、*実行時*で評価する必要があります。プリプロセッサは純粋なコンパイル時のものです。あなたは2つを混在させることはできません。 –
これをコンパイルしているマシンはターゲットでもないのですか? –