Atmelプロセッサ用のcodevisionコンパイラでは、たとえば、グローバル変数のストレージ アドレスを指定する可能性があります。
int a @0x100; // will place the variable at the address 0x100 in RAM
もちろん、標準 C のように、変数は宣言時に初期化できます。
int a=42;
ただし、両方を実行する可能性はありませんでした。int a @0x100 = 42
またはint a = 42 @0x100;
機能しない場合、コンパイラ エラーが発生します。
なぜそれを行うことがそれほど重要なのかと尋ねるかもしれません。
int a @0x100;
int main()
{
a = 42;
//...
}
ただし、EEPROMに変数がある場合は、それらを初期化する必要があります。これが、値を含む eeprom ファイルを自動的に生成する唯一の方法だからです。これらの値を後で割り当てることはできません。その場合、プログラムの開始ごとに実際に値が eeprom に書き込まれるからです。