Инициализация переменной и одновременное указание адреса хранилища :возможно?

В компиляторе codevision для процессоров Atmel есть возможность указать адрес хранения глобальной переменной, например

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 при каждом запуске программы.

6
задан vsz 2 August 2012 в 05:16
поделиться